为 HTTPMethods 创建模拟
Creating a Mock for HTTPMethods
在我的控制器中有这样一行代码
string method = HttpContext.Request.HttpMethod;
并且根据它是 GET
还是 POST
,方法正在做我想要测试的不同事情。但首先我应该能够嘲笑这个。我们正在使用 NSubstitute.
我做了一些研究,我发现最接近的是这个答案,但是 none 他们中的 NSubstitue.
Mocking Asp.net-mvc Controller Context
感谢任何帮助。
创建模拟和配置 return 值在 NSubstitute documentation 中有描述。
所以我们可以创建一个模拟 IFoo
使用:
var foo = Substitute.For<IFoo>();
我们可以使用 Returns
:
将成员配置为 return 特定值
// Make HttpMethod property return "GET"
foo.HttpMethod.Returns("GET");
// Make someOtherMock.GetFoo() return foo
someOtherMock.GetFoo().Returns(foo);
我们可以将模拟值注入另一个 class:
var x = new Context(foo, ... );
我认为这就是移植 linked code examples1 所需的一切。如果您需要更多信息,请发表评论,我会更新答案。
1 我避免发布完整的翻译,因为它可能因不同的 MVC 版本而异。希望这个答案能帮助您移植您需要的任何片段。
在我的控制器中有这样一行代码
string method = HttpContext.Request.HttpMethod;
并且根据它是 GET
还是 POST
,方法正在做我想要测试的不同事情。但首先我应该能够嘲笑这个。我们正在使用 NSubstitute.
我做了一些研究,我发现最接近的是这个答案,但是 none 他们中的 NSubstitue.
Mocking Asp.net-mvc Controller Context
感谢任何帮助。
创建模拟和配置 return 值在 NSubstitute documentation 中有描述。
所以我们可以创建一个模拟 IFoo
使用:
var foo = Substitute.For<IFoo>();
我们可以使用 Returns
:
// Make HttpMethod property return "GET"
foo.HttpMethod.Returns("GET");
// Make someOtherMock.GetFoo() return foo
someOtherMock.GetFoo().Returns(foo);
我们可以将模拟值注入另一个 class:
var x = new Context(foo, ... );
我认为这就是移植 linked code examples1 所需的一切。如果您需要更多信息,请发表评论,我会更新答案。
1 我避免发布完整的翻译,因为它可能因不同的 MVC 版本而异。希望这个答案能帮助您移植您需要的任何片段。