чтобы протестировать другой класс, я хочу создать заглушку для интерфейса IFoo :
public interface IFoo
{
int DoSomething(int value);
}
Заглушка создана в SetUp (или TestInitialize ) - метод для тестового устройства и сохраненный в свойстве, поскольку почти все методы тестирования нуждаются в IFoo :
this.Foo = MockRepository.GenerateStub<IFoo>();
Поскольку IFoo.DoSomething нуждается вчтобы вернуть переданное значение во всех случаях, кроме одного, я добавил это поведение в свой метод SetUp :
this.Foo.Stub(f => f.DoSomething(0)).IgnoreArguments().Return(0).WhenCalled(mi => mi.ReturnValue = mi.Arguments[0]);
Теперь, однако, этот один тест требует другого поведения: Вместо того, чтобы возвращать переданный аргумент, константа должна быть возвращена, если переданное значение равно другой константе.Следующий подход (записанный в самом методе теста) работает , а не :
this.Foo.Stub(f => f.DoSomething(42)).Return(43);
Предыдущий указанный более общий заглушка, кажется, переопределяет более конкретную заглушку.
Есть лиесть ли способ указать как специфические, так и общие заглушки для RhinoMock-объектов?
Один из обходных путей - воссоздание заглушки в самом тестовом методе - дублирование, которое я хотел бы избежать.Однако я мог бы жить с этой версией.
Что я также не хочу, так это явное исключение «42» в общем выражении через ограничения, поскольку это отрицательно повлияет на другие тесты.
Вызов BackToRecord тоже не вариант, так как, похоже, сбрасывает и другие заглушки.
Спасибо за ваши ответы!