Есть ли в Moq эквивалент метода Rhino Mocks .Do ()? - PullRequest
1 голос
/ 27 февраля 2012

Есть ли эквивалент метода Rhino Mocks .Do() в Moq? Я конвертирую свой код Rhino Mocks в Moq и застрял на следующем:

mockedObject
    .Expect(x => x.GetSomething())
    .Do((Func<SomeClass>)(() => new SomeClass());

Это не то же самое, что (в Moq, аналогично в Rhino Mocks):

mockedObject
    .Setup(x => x.GetSomething())
    .Return(new SomeClass());

Когда GetSomething() вызывается несколько раз в вашем модульном тесте, первый фрагмент кода всегда будет возвращать новый экземпляр. Второй кусок всегда будет возвращать один и тот же экземпляр.

То, что я хочу, - чтобы мой смоделированный объект (с Moq) всегда возвращал новый экземпляр. Поэтому я на самом деле хочу предоставить реализацию метода GetSomething() для моего смоделированного объекта.

Использование последовательностей не сработает, потому что я не знаю, сколько раз будет вызываться GetSomething(), и меня это не интересует.

1 Ответ

2 голосов
/ 27 февраля 2012

Вы должны быть в состоянии передать .Returns a Func<SomeClass> так же, как вы делаете с насмешками Rhino:

mockedObject
    .Setup(x => x.GetSomething())
    .Returns(() => new SomeClass());
...