我有一个带字符串参数和bool返回值的方法。 我想确保它始终返回true
我试过
myClass.Foo(A<string>.Ignored)
.WithReturnType<bool>()
.Returns(true);
现在我收到以下异常
System.ArgumentException:指定的对象未被识别为 假物。结果StackTrace:bei FakeItEasy.Core.DefaultFakeManagerAccessor.GetFakeManager(对象 proxy)bei FakeItEasy.FakeFacade.GetFakeManager(Object fakedObject) bei FakeItEasy.Configuration.FakeConfigurationManager.CallTo(Object fakeObject)bei FakeItEasy.A.CallTo(Object fake)[...]
我做错了什么?
答案 0 :(得分:4)
您没有告诉我们您如何制作myClass
。它是你班级的一个实例吗?这应该是假的。语法已关闭。
请考虑FakeItEasy tests中的此示例用法:
var foo = A.Fake<IFoo>();
A.CallTo(() => foo.Baz(null, null)).WithAnyArguments().Returns(99);
所以你的例子最终可能会像
那样var myClass = A.Fake<MyClass>(); // or maybe IMyClass - if Foo isn't
// virtual, you'll have problems faking it
A.CallTo((() => myClass.Foo(null)).WithAnyArguments().Returns(true);
或() => myClass.Foo(A<string>.Ignored)
,但我还没试过。
答案 1 :(得分:0)
我建议采用完整性的简短形式(如布莱尔康拉德所说)
var myClass = A.Fake<MyClass>(); // or maybe IMyClass - if Foo isn't
// virtual, you'll have problems faking it
A.CallTo((() => myClass.Foo(A<string>.Ignored)).Returns(true);
您可以将A<string>.Ignored
替换为A<string>._
,它们是等效的,但后者更具可读性