4

我已经开始使用 SpecFlow 来尝试为我的一个 ASP.NET MVC Web 应用程序编写规范。我遇到了两个基本问题,在谷歌中没有找到任何答案。

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

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

谢谢

大黄蜂

4

2 回答 2

6

如果您想测试您的 HTTP 管道,您需要 WatiN 之类的东西,或者您必须手动执行 HTTP 请求 = 对于每个测试,您必须手动捕获请求并在测试中WebClientHttpWebRequest在测试中创建相同的请求。我会使用 WatiN,因为它可以进行真正的端到端测试。

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

于 2011-07-04T10:39:49.153 回答
1

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

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

于 2011-07-05T08:05:35.337 回答