为HTTPMethods创建一个模拟

时间:2016-06-20 18:44:52

标签: asp.net-mvc unit-testing nsubstitute

在我的控制器中,我有一行像这样的代码

string method = HttpContext.Request.HttpMethod;

并且基于它是GET还是POST,方法正在执行我想要测试的不同内容。但首先我应该能够嘲笑这个。我们正在使用 NSubstitute

我做了一些研究,我发现最接近的是这个答案,但没有一个人使用 NSubstitue

Mocking Asp.net-mvc Controller Context

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

NSubstitute documentation

中描述了创建模拟和配置返回值

因此我们可以使用:

创建模拟var foo = Substitute.For<IFoo>();
Returns

我们可以使用// Make HttpMethod property return "GET" foo.HttpMethod.Returns("GET"); // Make someOtherMock.GetFoo() return foo someOtherMock.GetFoo().Returns(foo); 配置成员返回特定值:

var x = new Context(foo, ... );

我们可以将模拟值注入另一个类:

$(document).ready(function() {
  $('.classname').change(function() {
    if ($(this).is(':checked')) {
        alert("hello World"); 
    }
  });
});

我认为这是移植linked code examples 1 所需的一切。如果您需要更多信息,请发表评论,我会更新答案。

<小时/> 1 我避免发布完整的翻译,因为它可能因不同的MVC版本而异。希望这个答案可以帮助您移植所需的任何代码片段。