是一种伪造Uri类的方法

时间:2016-09-19 09:14:28

标签: nunit fakeiteasy

我使用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

1 个答案:

答案 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); 方法是否应抛出