我试图理解如何测试 .NET Core 中间件。
public class MyMiddleware
{
public async Task Invoke(HttpContext context) {
var requestProperties = GetPropertiesFromRequest(context.Request);
}
public string GetPropertiesFromRequest(HttpRequest request) {
//do stuff with request
}
}
我设置了一个单元测试,需要将HttpContext传递给中间件。问题在于我似乎找不到一种方法来向上下文中添加HttpRequest。
[Fact]
public async Task Middleware_should_get_properties_from_request()
{
var request = new HttpRequestMessage()
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://localhost:5001/"),
Content = new StringContent({ 'message':'some content'}, Encoding.UTF8, "application/json"),
};
HttpContext context = new DefaultHttpContext();
//context.Request = request; //how to set the request on the context ?
var myMiddleware = new MyMiddleware();
await myMiddleware.Invoke(context);
//Assert properties
}
HttpContext上的Request属性是只读的。是否有其他方法将httpRequest添加到上下文中?