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.
Другие вопросы по тегам