Moh Rhino: синтаксис теста AAA без статических методов MockRepository? - PullRequest
4 голосов
/ 23 декабря 2008

Я использовал (и мне нравится) новый синтаксис Rhino Mocks AAA. Однако, одна вещь, которая озадачивает меня, состоит в том, что я должен создать свои окурки и насмешки как это:

var v1 = MockRepository.GenerateStub<MyClass>();

вместо созданного экземпляра MockRepository:

var mr = new MockRepository();
var v1 = mr.GenerateStub<MyClass>();

Этот синтаксис облегчит переход моих модульных тестов.

Из прочтения вики Ayende кажется, что второй синтаксис должен работать, но я просто не могу заставить его работать правильно. Если я делаю это таким образом, то мне приходится использовать блоки записи / воспроизведения. Я также не могу найти в Интернете ни одного примера того, кто использовал новый синтаксис без статических методов.

Так что мой вопрос: кому-нибудь еще удалось заставить работать синтаксис AAA без использования статических методов и без необходимости прибегать к записи / воспроизведению? Если да, то чего мне не хватает?

1 Ответ

4 голосов
/ 23 декабря 2008

Я проверил насмешки носорога с отражателем.

MockRepository.GenerateStub фактически создает хранилище и вызывает нестатическую заглушку. Вот что на самом деле делают статические методы (скопировано с рефлектора)

public static object GenerateStub(Type type, params object[] argumentsForConstructor)
{
    MockRepository repository = new MockRepository();
    object obj2 = repository.Stub(type, argumentsForConstructor);
    repository.Replay(obj2);
    return obj2;
}

Похоже, вы пропустили вызов Repository.Replay в вашем коде.

...