我使用NUnit编写单元测试用例,并为MVC4控制器轻松伪造。 在其中一个控制器中,我应该得到例外。
ExceptionDetail exception = new ExceptionDetail() { Description = "Test", ErrorCode = ExceptionErrorCode.UserIsDisabled };
Exception ex = new Exception(new Uri("http://localhost//Plat/ManagementSvc/Groups?UserID=" + iD "), exception );
A.CallTo(() => Fake.GetDataAsync<IEnumerable<Group>>(fakeHttpSession, url)).Throws(ex);
我的问题是不是传递localhost(新的Uri(“http://localhost//Plat/ManagementSvc/Groups”),有没有办法伪造URI的URL
答案 0 :(得分:0)
如果问题是当您的生产代码调用< asp:DropDownList runat="server" ID="dpdTags" >
时没有抛出异常,则可能只是您的代码传入了不同的Uri。如果是这样,您可以使用不同形式的argument constraint更改哪个Uri触发该调用。
您可以选择匹配任何 Uri,而不是完全匹配Uri:
GetDataAsync
或者你甚至可以更具体:
A.CallTo(() => Fake.GetDataAsync<IEnumerable<Group>>(fakeHttpSession, A<Uri>.Ignored))
.Throws(ex);
如果那就是我们需要的东西。有很多选择。查看文档。
请注意,这里没有Uri的伪造。你只是告诉FakeItEasy对收到的Uri应用哪些测试来决定伪造的A.CallTo(() => Fake.GetDataAsync<IEnumerable<Group>>(fakeHttpSession, A<Uri>.That.Matches(uri => uri.AbsolutePath == "/Plat/ManagementSvc/Groups"))
.Throws(ex);
方法是否应抛出