Rhino Mocks проблемы с частным сеттером в заглушке - PullRequest
8 голосов
/ 27 апреля 2011

Ошибка:

Вы пытаетесь установить ожидание на свойство, которое было определено для использования PropertyBehavior. Вместо того чтобы писать такой код: mockObject.Stub (x => x.SomeProperty) .Return (42); Вы можете использовать собственность напрямую для достижения тот же результат: mockObject.SomeProperty = 42;

var x = MockRepository.GenerateStub<MyClass>();
x.Stub(s => s.Items).Return(new List<Item>());

public class MyClass
{
    public virtual IEnumerable<Item> Items
    {
        get {return _items;}
        private set {_items = value;}
    }
}

Что я делаю не так?

Ответы [ 3 ]

7 голосов
/ 27 апреля 2011

Я думаю, что использование Mock вместо заглушки позволяет обойти эту проблему, но, возможно, я пропущу лучший способ.

        var x = MockRepository.GenerateMock<MyClass>();
        x.BackToRecord(BackToRecordOptions.PropertyBehavior);
        SetupResult.For(x.Items).Return(new List<Item>());
        x.Replay();
2 голосов
/ 28 апреля 2011

Более чистый способ, чем был бы:

var x = MockRepository.GenerateMock<MyClass>();
x.Stub(s => s.Items).Return(new List<Item>());

Я просто не понимаю, почему GenerateStub не работает.

0 голосов
/ 03 июля 2012

Я получил это же сообщение. Моя проблема заключалась в том, что я пытался заглушить не виртуальное свойство в конкретном классе.

...