我已经开始使用SpecFlow尝试为我的一个ASP.NET MVC Web应用程序编写规范。我遇到了两个基本问题,我没有在谷歌找到任何答案。
有没有办法模仿浏览器行为而无需创建实际的浏览器实例。我知道有像“WatiN”这样的库可以创建实际的浏览器实例而且我不愿意使用它,因为它可能会显着降低测试性能(我需要在构建服务器中运行它们)
我需要依赖浏览器或模拟浏览器的原因是我不想在控制器上进行测试,因为它不能保证在我实例化控制器时触发所有动作过滤器直接(因为它是asp.net mvc引擎的一部分)。有人可以建议我采用方法测试我的控制器 - 所有操作过滤器都启动了(这样我可能不想使用浏览器/模拟浏览器)?
谢谢
Bumble Bee
答案 0 :(得分:6)
如果你想测试你的HTTP管道,你需要像WatiN这样的东西,或者你必须手动执行HTTP请求=对于每个测试,你必须手动捕获请求并使用WebClient
或HttpWebRequest
创建相同的请求你的考试。我会使用WatiN,因为它可以进行真正的端到端测试。
在构建服务器上运行的测试也必须很快 - 我们有几组测试,其中一些测试运行几个小时。
答案 1 :(得分:1)
我会查看Mara项目(https://github.com/remi/Mara),它是.net的Capybara(一个ruby工具)克隆。
Mara不仅可以更轻松地编写测试,还可以让您选择如何运行测试;与selenium,WatIn或无头甚至使用上面提到的WebClient。在大多数情况下,它只是配置。