连接到 ASP.NET Web 服务时单元测试抛出异常

发布于 2025-01-01 09:18:33 字数 847 浏览 1 评论 0原文

我创建了一个单元测试来测试是否可以登录我的 ASP.NET Web 服务。网络服务工作正常,甚至登录过程也正常。

然而,当尝试通过我的测试连接到它时,它给了我一个错误:

指定的 URL ('http://www.foo.com/') 与 一个有效的目录。配置为在 IIS 中的 ASP.NET 中运行的测试需要 URL 存在的有效目录。

我正在通过 Visual Studio 运行我的 Web 服务,因为该项目仍在开发中。

这是我的测试代码:

[TestMethod()]
        [HostType("ASP.NET")]
        [UrlToTest("http://www.foo.com/")]
        public void Login_Test_It_Fails_If_GUID_IS_Wrong()
        {
            //Arrange
            Service service = new Service(); 
            string pGUID = string.Empty; 
            string connectionSQL = @"XXXXXXXXXX";
            bool targetOutput = false;

            //Act
            targetOutput = service.Login(pGUID, connectionSQL);

            //Assert
            Assert.IsFalse(targetOutput);
        }

提前致谢。

I created a unit test to test if a I can login to my ASP.NET web service. The web service works fine and even the login process.

However when trying to connect to it through my test it is giving me an error:

The URL specified ('http://www.foo.com/') does not correspond to
a valid directory. Tests configured to run in ASP.NET in IIS require a
valid directory to exist for the URL.

I'm running my web service through visual studio, since the project is still in development.

this is my test code:

[TestMethod()]
        [HostType("ASP.NET")]
        [UrlToTest("http://www.foo.com/")]
        public void Login_Test_It_Fails_If_GUID_IS_Wrong()
        {
            //Arrange
            Service service = new Service(); 
            string pGUID = string.Empty; 
            string connectionSQL = @"XXXXXXXXXX";
            bool targetOutput = false;

            //Act
            targetOutput = service.Login(pGUID, connectionSQL);

            //Assert
            Assert.IsFalse(targetOutput);
        }

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花桑 2025-01-08 09:18:33

您正在此处进行集成测试,因为您正在测试您的应用程序是否可以与外部依赖项进行通信。

如果您想进行单元测试,您可能需要探索不同的方法。

  1. 如果 Web 服务是您控制的,您可以为服务本身编写测试来确认其登录身份验证逻辑。

  2. 对于您的消费应用程序,您可以根据服务的模拟编写单元测试,以确保您的应用程序在收到来自服务的响应时表现出正确的行为。

另一方面,将要使用的连接字符串传递到服务中似乎是一个糟糕的设计。为什么调用应用程序需要了解服务应使用哪个数据库?

You're doing an integration test here, as you are testing that your application can communicate with an external dependency.

If you wanted to unit test, you might want to explore a different approach.

  1. If the web service is something you control, you can write tests for the service itself confirming its login authentication logic.

  2. For your consuming application, you can write unit tests based off of a mock of the service to ensure that your application exhibits the correct behavior when it receives a response from the service.

On another note, passing the connection string to use into the service seems like a poor design. Why should the calling application need to have any knowledge of what database the service should be using?

素罗衫 2025-01-08 09:18:33

在 ASP.NET 中运行测试需要 URL 解析为 ASP.NET 页面,并且该页面要正确执行到 Load 事件。
测试方法由页面加载事件调用。因此,您可以创建一个空白的 aspx 页面,并设置 UrlToTest 属性来挂钩它。

Running tests in ASP.NET requires the URL to resolve to an ASP.NET page and for the page to execute properly up to the Load event.
The test method is called by page load event. So, you can create a blank aspx page, and set the UrlToTest attribute to hook it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文