2013-07-12 52 views
1

我有一个带有字符串参数和bool返回值的方法。 我想确保它始终返回trueFake It Easy - A <T> .Ignored()with string - A <string> .Ignored()

我试图

myClass.Foo(A<string>.Ignored) 
.WithReturnType<bool>() 
.Returns(true); 

现在,我得到下面的异常

System.ArgumentException:指定的对象不被识别为一个 假的对象。结果堆栈跟踪:贝 FakeItEasy.Core.DefaultFakeManagerAccessor.GetFakeManager(对象 代理)贝FakeItEasy.FakeFacade.GetFakeManager(对象fakedObject) 贝FakeItEasy.Configuration.FakeConfigurationManager.CallTo(对象 fakeObject)贝FakeItEasy.A.CallTo(假冒的对象)[...]

我在做什么错?

回答

3

您不会告诉我们您如何制作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),但我还没有尝试过。

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>._这是等价的,但后者更具可读性取代A<string>.Ignored