Как заставить метод void возвращать Void из объекта-заглушки? - PullRequest
6 голосов
/ 11 октября 2011

Как я могу заставить объект-заглушку в RhinoMocks возвращать void для метода void на нем?

Взять этот пример:

public interface ICar 
{
    string Model {get;set;}
    void Horn();
}

ICar stubCar= MockRepository.GenerateStub<ICar>();
stubCar.Expect(c=>c.Horn()).Return( //now what so that 
                                   // it returns nothing as the meth. returns void ? 

Ответы [ 2 ]

8 голосов
/ 11 октября 2011

Метод не может вернуть значение - это метод void.CLR не будет позволять пытаться вернуть значение.Вам не нужно проверять это.

Вам нужен только звонок Expect.

6 голосов
/ 11 октября 2011

Метод Return() недопустим для вызова метода void. Скорее вы хотите что-то вроде этого:

ICar stubCar= MockRepository.GenerateStrictMock<ICar>();
stubCar.Expect(c=>c.Horn());
stubCar.DoSomethingThatIsSupposedToCallHorn();
stubCar.VerifyAllExpectations();

, который скажет вам, был ли вызван Horn().

Вот как вы проверяете, что void-методы вызываются при модульном тестировании. Вы делаете следующее:

  1. Настройка ожидания (Expect())
  2. Вызовите метод, который должен вызывать ожидание
  3. Убедитесь, что был вызван ожидаемый метод.
...