C#的易于模拟的HTTP客户端框架

时间:2009-02-17 08:01:59

标签: c# http tdd mocking

在即将开展的项目中,我将用C#编写一个应用程序,部分必须与HTTP服务器通信。我非常喜欢编写TDD风格的代码,如果我可以在我的测试中模拟所有的HTTP请求,我会很喜欢它。

这里有人知道一个易于模拟的HTTP客户端框架吗?

聚苯乙烯。我通常使用Moq进行模拟。如果你知道一些更好的模拟HTTP请求的免费模拟框架,那也不错。

4 个答案:

答案 0 :(得分:6)

DotNetOpenId是一个开源项目,您可以从中重用代码,使用HTTP包装类进行所有调用。在测试期间,会注入模拟HTTP处理程序,以便在调用之前以编程方式设置响应。它有另一种模式,它托管自己的ASP.NET站点,以便可以运行完整的实际堆栈。

虽然它还没有作为一个独立的解决方案被淘汰,但效果很好。如果您有兴趣重复使用它,请参阅以下相关链接。您可以在dotnetopenid@googlegroups.com上寻求帮助,将其整合在一起。

直播: StandardWebRequestHandler.cs

模拟:MockHttpRequest.csTestWebRequestHandler.cs

答案 1 :(得分:4)

我建议您使用框架支持,即System.Net.WebRequest。

定义一个非常简单的界面,以及webrequest的简单包装器。通过这种方式,您可以获得所需的内容,并且不会为框架已经很好地添加外部依赖项。

答案 2 :(得分:1)

您可以使用WireMock.Net这是一个灵活的库,可以使用匹配条件的请求来存根和模拟Web HTTP响应。

这也可以在单元测试项目中非常容易地使用。查看维基详情。

找到NuGet here

答案 3 :(得分:0)

我认为实际上没有任何框架可以处理您要归档的内容。毕竟只有你知道每个Http请求应该做什么。所以基本上你有两个选择:

  1. 在另一侧进行调用并使用虚拟实现。这可能是一个返回虚拟数据的简单控制台应用程序。如果您需要更多逻辑,我会考虑使用对象数据库 - 在我看来,它们非常适合这些应用程序。
  2. 在应用程序端使用模拟实现。如果这个实现有很多逻辑,就不要使用任何模拟框架 - 创建一个具有所有逻辑的自定义模拟类。
  3. 希望这有帮助