在配置方法中,我调用我的扩展方法
app.UseJsonResponse();我的可拓方法
public static class JsonResponseExtension
{
public static IApplicationBuilder UseJsonResponse(this IApplicationBuilder app)
{
app.UseMiddleware<JsonResponseMiddleware>();
return app;
}
}我想测试UseJsonResponse方法。我写
public class JsonResponseExtensionTest
{
[Fact]
public void UseJsonResponse()
{
var iApplicationBuilderMock = new Mock<IApplicationBuilder>();
iApplicationBuilderMock
.Verify(b => b.UseMiddleware<JsonResponseMiddleware>(), Times.Never);
}
}我得到了一个例外
Extension methods (here: UseMiddlewareExtensions.UseMiddleware) may not be used in setup / verification expressions.如何解决这个问题?
发布于 2020-03-30 12:21:24
UseMiddleware是一个不能被模仿的扩展,您必须模拟扩展在接口上调用的内容。在这种情况下,方法可能是
IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware);我需要更多地了解JsonResponseMiddleware作为UseMiddleware扩展,并且它也调用了相当多的扩展,其中一些与JsonResponseMiddleware实现的接口有关。作为参考,UseMiddleware扩展可以找到这里。
有了手头的信息,在调用UseJsonResponse扩展之后,下面将验证Use是否被调用过一次。
[Test]
public void Test1()
{
var applicationBuilderMock = new Mock<IApplicationBuilder>();
var mockedApplicationBuilder = applicationBuilderMock.Object;
mockedApplicationBuilder.UseJsonResponse();
applicationBuilderMock.Verify(x => x.Use(It.IsAny<Func<RequestDelegate, RequestDelegate>>()), Times.Once);
}为了更进一步,我需要更多地了解JsonResponseMiddleware,如前所述。对于JsonResponseMiddleware类型的检查,它看起来也需要付出更多的努力。
https://stackoverflow.com/questions/60803369
复制相似问题