Можно ли проверить, какие свойства объекта передаются в метод Mocked? Например, у меня есть:
public class Foo
{
int SomeNumber {get; set;}
}
public class ReceivesFoo: IReceivable
{
public void Process(Foo foo)
{
}
}
public class Bar
{
private IReceivable receiver;
public void SomeMethod(int b)
{
Foo foo = new Foo();
if (b == 0)
{
foo.SomeNumber = 12;
}
else
{
foo.SomeNumber = 7;
}
receiver.Process(foo);
}
}
public class TestBar
{
public void ZeroReceives12()
{
mockReceivable.Setup(x => x.Process(It.IsAny<Foo>());
bar.SomeMethod(0);
}
}
Это довольно упрощение, но, надеюсь, вы знаете, к чему я клоню. Я знаю, что создавать новый класс в методе - плохая идея. Так что это делается где-то еще на фабрике сортов. Но вся логика для установки различных свойств нового объекта выполняется в этом методе. Потому что нет смысла использовать эту логику на фабрике, потому что она не имеет ничего общего с фабрикой, и все будет меняться в зависимости от состояния бара.
Так что, в общем, я просто хочу иметь возможность сделать больше, чем просто проверить, что поддельный приемник получил бы какое-то Foo. Я хочу убедиться, что он получил экземпляр Foo и его SomeNumber был установлен на 12.