2013-07-12 107 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