假装轻松-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)〔…〕
我做错了什么?
您没有向我们展示如何制作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>._
,但后者更具可读性