Fake It Easy - A<T>.Ignored () со строкой - A<string>.Ignored ()

У меня есть метод со строковым параметром и возвращаемым значением bool. Я хочу убедиться, что он всегда возвращает истину

Я старался

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

Теперь я получаю следующее исключение

System.ArgumentException: указанный объект не распознается как поддельный объект. Результат StackTrace: bei FakeItEasy.Core.DefaultFakeManagerAccessor.GetFakeManager(Прокси-объект).]

Что я делаю неправильно?

2 ответа

Вы не показываете нам, как вы делаете 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), но я не пробовал.

Я бы посоветовал перейти к краткой форме, которая находится в ее полноте (как говорит Блэр Конрад)

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>._ которые эквивалентны, но последний более читабелен

Другие вопросы по тегам