假 - 容易 - <t> .Ignored()带字符串 - A <string> .Ignored()</string> </t>

时间:2013-07-12 07:24:54

标签: c# fakeiteasy

我有一个带字符串参数和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)[...]

我做错了什么?

2 个答案:

答案 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>._,它们是等效的,但后者更具可读性