使用 Moq 模拟上下文
Mocking a context using Moq
在调试请求时,我看到传递给的对象类型是我试图在单元测试中模拟的 Microsoft.AspNetCore.Http.DefaultHttpContext
类型,由于某种原因它是不可实例化的。
截图:
https://i.stack.imgur.com/Hag1d.png
app.Run(async context =>
{
});
单元测试
var contextMock = new Mock<Microsoft.AspNetCore.Http.DefaultHttpContext>();
错误:
无需嘲笑 class。
您可以创建 DefaultHttpContext
的实例
HttpContext context = new DefaultHttpContext();
context.Request.Path = new PathString("path here");
//...
或者只是模拟 HttpContext
是您想模拟特定功能。
Mock<HttpContext> contextMock = new Mock<HttpContext>();
//...setup
var path = new PathString("path here");
contextMock.Setup(_ => _.Request.Path).Returns(path);
HttpContext context = contextMock.Object;
前者更简单,几乎不需要设置。
在调试请求时,我看到传递给的对象类型是我试图在单元测试中模拟的 Microsoft.AspNetCore.Http.DefaultHttpContext
类型,由于某种原因它是不可实例化的。
截图:
app.Run(async context =>
{
});
单元测试
var contextMock = new Mock<Microsoft.AspNetCore.Http.DefaultHttpContext>();
错误:
无需嘲笑 class。
您可以创建 DefaultHttpContext
HttpContext context = new DefaultHttpContext();
context.Request.Path = new PathString("path here");
//...
或者只是模拟 HttpContext
是您想模拟特定功能。
Mock<HttpContext> contextMock = new Mock<HttpContext>();
//...setup
var path = new PathString("path here");
contextMock.Setup(_ => _.Request.Path).Returns(path);
HttpContext context = contextMock.Object;
前者更简单,几乎不需要设置。