2011-07-04 17 views
4

我已经开始使用SpecFlow来尝试为我的ASP.NET MVC Web应用程序编写规范。我遇到了两个基本问题,我在Google中没有找到任何答案。具有Specflow和模拟浏览器行为的BDD

  1. 有没有一种方法可以模仿浏览器行为而不必创建实际的浏览器实例。我知道有诸如“WatiN”这样的库可以创建实际的浏览器实例,我不愿意使用它,因为它可能会显着降低测试性能(我需要在构建服务器中运行它们)

  2. 原因为什么我需要依赖浏览器或模拟浏览器,因为我不希望直接在控制器上进行测试,因为它不能保证我直接实例化控制器时触发所有操作过滤器(因为它是asp.net mvc引擎)。有人可以建议我采用一种方法来测试我的控制器 - 所有的操作过滤器都已启动(这样我可能不想使用浏览器/模拟浏览器)?

感谢

大黄蜂

回答

6

如果你想测试你的HTTP管道,你需要像华廷,或者您必须手动执行HTTP请求=每次测试必须手动赶上请求,并创建在您的测试中与WebClientHttpWebRequest相同。我会使用WatiN,因为它会进行真正的端到端测试。

在构建服务器上运行的测试必须快速也是不正确的 - 我们有几组测试,其中一些测试运行几个小时。

1

我会查看Mara项目(https://github.com/remi/Mara),它是.net的一个Capybara(一个红宝石工具)克隆。

Mara不仅让您更容易编写测试,而且还可以选择和选择如何运行测试;与硒,WatIn或无头,甚至使用上面提到的WebClient。在大多数情况下,它只是配置。