2016-08-12 2 views
1

Использования NSubstitute, я могу это сделать:Могу ли я отменять замену NSubstitute() вместо воссоздания макета?

mock.doStuff().Returns(foo); 

Но для большого испытательного стенда, это не подходит в каждом тесте.

Могу ли я «отменить» эту замену Returns(), или я должен воссоздать макет перед каждым тестом? (что является slooooow ...)

ответ

2

Проще всего сделать, чтобы переопределить заштрихованное значение - будет использоваться последний набор.

mock.doStuff().Returns(foo); 
... 
mock.doStuff().Returns(anotherFoo); 

Вы также можете получить детализированный контроль над ПЕРЕЗАГРУЗКА частей заменителя с помощью ClearExtensions:

using NSubstitute.ClearExtensions; 
... 
mock.ClearSubstitute(ClearOptions.ReturnValues); 

ClearExtensions доступен в версии-кандидата на 2.0.0 (и выше), поэтому вам может понадобиться для включения prerelease packages in NuGet to get that feature.

+0

Выполняет ли nuke все возвращаемые значения для макета или только того, к которому он применяется? Итак, существует ли разница между 'mock.ClearSubstitute (ClearOptions.ReturnValues)' и 'mock.doStuff(). ClearSubstitute (ClearOptions.ReturnValues)'? –

+1

'ClearSubstitute' nukes все возвращается на одном суб. Если вы хотите сбросить один вызов, я думаю, что подход с переопределением будет работать лучше всего. –

+0

Жаль ... но это приятная новая функция. –

Смежные вопросы