假装轻松-A<;T>;.Ignored(),带字符串-A<;字符串>;.忽略()

本文关键字:gt lt 字符串 忽略 假装 Ignored | 更新日期: 2023-09-27 18:22:08

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

我试过

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

现在我得到以下异常

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

我做错了什么?

假装轻松-A<;T>;.Ignored(),带字符串-A<;字符串>;.忽略()

您没有向我们展示如何制作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),但我还没有尝试过。

我建议使用完整的缩写形式(正如Blair Conrad所说)

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>._,但后者更具可读性