1

我有一个带有字符串参数和布尔返回值的方法。我想确保它总是返回 true

我试过了

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

现在我得到以下异常

System.ArgumentException:指定的对象未被识别为假对象。结果 StackTrace: bei FakeItEasy.Core.DefaultFakeManagerAccessor.GetFakeManager(Object proxy) bei FakeItEasy.FakeFacade.GetFakeManager(Object fakedObject) bei FakeItEasy.Configuration.FakeConfigurationManager.CallTo(Object fakeObject) bei FakeItEasy.A.CallTo(Object fake) [.. .]

我究竟做错了什么?

4

2 回答 2

4

你没有向我们展示你是如何制作myClass的。它是您班级的一个实例吗?应该是假的。并且语法关闭。

考虑FakeItEasy 测试中的这个示例用法:

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),但我没有尝试过。

于 2013-07-12T12:51:16.013 回答
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>.IgnoredA<string>._等效的,但后者更具可读性

于 2013-07-16T09:27:35.310 回答