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