У меня есть следующий тестовый код, использующий NSubstitute:
[TestMethod]
public void Test()
{
var foo = Substitute.For<IFoo>();
foo.Foo(Arg.Is<Bar>(b => !b.X)).Returns(0); // Line 1
foo.Foo(Arg.Is<Bar>(b => b.X)).Returns(1); // Line 2
}
public interface IFoo
{
int Foo(Bar b);
}
public class Bar
{
public bool X;
}
Когда строка 2 выполняется, генерируется исключение:
System.NullReferenceException: 'Objectссылка не установлена на экземпляр объекта. '
Однако, исключение составляет , а не , если я изменяю !b.X
на b != null && !b.X
.Кажется, что лямбда-выражение в строке 1 оценивается с помощью пустой лямбда-переменной при вызове строки 2.
Я намерен создать более одной конфигурации вызова для метода, над которым я работаю.Итак, я делаю это неправильно?Есть ли другой способ сделать это?