为 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 版本而异。希望这个答案能帮助您移植您需要的任何片段。