Я ищу способ сделать мои тесты более понятными, вот в чем проблема:
public interface A
{
}
public interface B
{
A GetA();
}
Теперь, если я хочу заглушку на B и новый экземпляр каждый раз, когда я вызываю GetA, я делаю это:
[Test]
public void TestName()
{
MockRepository mockery = new MockRepository();
B b = mockery.Stub<B>();
b.Stub(x => x.GetA()).Return(mockery.Stub<A>()).Repeat.Once();
b.Stub(x => x.GetA()).Return(mockery.Stub<A>()).Repeat.Once();
mockery.ReplayAll();
Assert.IsFalse(ReferenceEquals(b.GetA(), b.GetA()));
}
Обратите внимание, что в assert я дважды вызываю GetA, и я настроил результаты как Repeat.Once () вместо Repeat.Twice ();
Если вы запустите этот тест, он пройдет, потому что экземпляры разные. Однако, я не нахожу этот код очень ясным таким образом. Как заставить Rhino Mocks генерировать новый экземпляр при каждом вызове?
Примечание: В прошлом я использовал много трюков, например, при каждом возврате, используя Do () для выполнения некоторого кода, который изменяет экземпляр и тому подобное, но есть ли что-то вроде .GenerateNewInstance () или аналогичный?