tdd - 如何对 404 - Not Found 进行单元测试或集成测试?

标签 tdd nunit watin bdd specflow

我的团队正在使用 S#arp 架构框架在 ASP.Net MVC 2 中编写内容管理的 Web 托管应用程序。我使用 SpecFlow 和 WatiN 进行集成测试,使用 NUnit 进行单元测试。

我有一个自定义 Controller 工厂,它根据 URL 和站点在数据库中定位页面,然后加载正确的 Controller 和操作。当在数据库中找不到页面(或站点)时,它还会加载错误 Controller 。

我想编写一个单元测试或集成测试来验证 404 页面在 URL 无效时是否正确显示。 WatiN 无法检查响应头,因此无法准确确保加载了实际的 404 页面。这可能会消除作为解决方案的集成测试。

我是 TDD 和 BDD 的新手,所以我可能会遗漏一些明显的东西。此外,我正在对这个项目进行改造测试,这使得它变得更加困难。

提前致谢。

最佳答案

通常我们在写BDD场景的时候,都是从用户的角度来写的。

如果用户是一个普通人,他们可能不会太在意标题是否是真正的 404。他们更喜欢一个给他们一个清晰有用的信息的页面。编写场景以检查清晰且有用的消息。

Given no section on unicorns exists
When the user browses for horses
And changes the url to be about unicorns
Then the user should be told that no such page exists.

BDD 并不是真正的测试。它是关于对话,让您发现您没有想到的其他事情,并就应该发生的事情达成共识。例如,当普通用户尝试访问管理页面时会发生什么?他们应该“拒绝访问”还是根本不知道该页面在那里?如果页面被删除怎么办?这些讨论比试图确定所有事情更有用。

如果您的 404 与发送给用户的特定消息相关联,那么您可以简单地对适当的响应进行单元测试。这将大大减少将来意外发送带有消息的错误代码的机会,并且您可以专注于真正的好处。

关于tdd - 如何对 404 - Not Found 进行单元测试或集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796589/

相关文章:

javascript - 从 C# WebBrowser 或 WatiN 获取 Javascript 方法列表

jquery - 使用 qUnit 测试 .animate 的更好方法

unit-testing - 无法将 ReactiveUI 添加到 NUnit 测试项目

ruby-on-rails - RSpec: Controller 规范的多个断言

nunit - 测试失败时 Hook NUnit 或 SpecFlow

c# - 无法传递字符串数组

WatiN 错误无法加载程序集

automated-tests - 替换 Watin 的测试框架,如果它会停止维护?

spring-boot - @WebMvcTest, @DataJpaTest 我想知道它是 "Unit Tests"还是 "Integration Tests."

php - 如何启动 TDD/BDD PHP CodeIgniter