在我的项目中,我们想要模拟UrlHelper来测试控制器的动作。我找到了允许我这样做的代码,不幸的是它是用Moq编写的:link
有一条线,在FIE中我不知道要更换热线:
response.Setup(s => s.ApplyAppPathModifier(It.IsAny<string>())).Returns<string>(s => s);
抛出System.NotImplementedException:
A.CallTo(() => response.ApplyAppPathModifier(A<string>.Ignored)).CallsBaseMethod();
这将从Url.Action返回空字符串:
A.CallTo(() => response.ApplyAppPathModifier(A<string>.Ignored)).Returns("");
当我从代码中删除该行时,Url.Action也会返回空字符串。
我不想使用2个不同的模拟库,但我没有看到任何替换它的可能性。使用Moq的MvcMockHelpers没有问题。
答案 0 :(得分:4)
根据documentation,ReturnsLazily
会做同等的事情:
A.CallTo(() => response.ApplyAppPathModifier(A<string>.Ignored))
.ReturnsLazily((string s) => s);