RhinoMocks: AssertWasCalled не работает на заглушке
Я пытаюсь утверждать с RhinoMocks, что был вызван определенный установщик свойства. Но это не работает, как ожидалось.
Следующий упрощенный пример иллюстрирует проблему.
Рассмотрим этот интерфейс:
public interface IMyInterface
{
string SomeProperty { get; set; }
}
А теперь рассмотрим следующий код:
var mock = MockRepository.GenerateStub<IMyInterface>();
mock.SomeProperty = "abc";
mock.AssertWasCalled(x => x.SomeProperty = Arg<string>.Is.Anything);
Я ожидал, что утверждение на последней строке пройдет без проблем. Тем не менее, это бросает ExpectationViolationException
с этим сообщением:
"IMyInterface.set_SomeProperty (что угодно); Ожидаемый #1, Фактический #0."
Я не могу понять, почему это должно произойти. Может кто-нибудь, пожалуйста, помогите?
1 ответ
Решение
Объект, возвращаемый GenerateStub<T>
не записывает вызовы свойств и методов. Если вы хотите подтвердить, были ли вызваны сеттеры, геттеры или методы, используйте GenerateMock<T>
вместо.
// Replace
var mock = MockRepository.GenerateStub<IMyInterface>();
// with
var mock = MockRepository.GenerateMock<IMyInterface>();
// and everything should work again.