无法创建request.Uri



我有一段要测试的代码:

public override async Task Invoke(IOwinContext context)
{

if (context.Request.Uri.AbsolutePath.ToLower().Equals("/data"))
{
..other stuff
}
await this.Next.Invoke(context);
}

现在我想对这个进行单元测试,但是对于AbsolutePath

会得到一个异常

系统。InvalidOperationException:不支持此操作相对URI。在System.Uri.get_AbsolutePath ()

下面是我的单元测试:

[Test]
public void MiddleWare_Should_Not_Call_Process_Request_IF_Uri_Does_Not_Match()
{
var request = A.Fake<IOwinRequest>();
A.CallTo(() => request.Uri).Returns(new Uri("http://dummyUrl.com/login"));
var middleware = new MyMiddleware(_owinMiddleware);
middleware.Invoke(this._owinContext).GetAwaiter().GetResult();
Assert.IsNull(this._owinContext.Response);
}

我正在使用Nuit和FakeItEast。知道我该怎么解决这个问题吗?

你也应该嘲笑IOwinContext.Request。否则,它将无法解析请求本身,因此将永远不会使用模拟请求。

[Test]
public void MiddleWare_Should_Not_Call_Process_Request_IF_Uri_Does_Not_Match()
{
var request = A.Fake<IOwinRequest>();
A.CallTo(() => this._owinContext.Request).Returns(request); 
A.CallTo(() => request.Uri).Returns(new Uri("http://dummyUrl.com/login"));
var middleware = new MyMiddleware(_owinMiddleware);
middleware.Invoke(this._owinContext).GetAwaiter().GetResult();
Assert.IsNull(this._owinContext.Response);
}

相关内容

  • 没有找到相关文章

最新更新