Почему Rhino Mocks (v3.6) генерирует тип прокси, если типом возврата является интерфейс, если вы не явно указываете возвращаемое значение (я знаю, что вы всегда должны указывать возвращаемое значение) , но это другой вопрос)?
Множество веб-статей и даже некоторые сообщения SO RhinoMock: Mocks Vs StrictMocks Vs DynamicMocks , скажем, что mock вернет тип по умолчанию в качестве результата, я бы предположил default(T)
. Я не вижу такого поведения (см. Ниже). В документации Rhino Mocks я не могу найти ничего, что бы указывало на поведение.
Я также тестировал (аналогично приведенному ниже) с целочисленными типами и классом в качестве возвращаемых типов, и оба эти теста выдают исключение "требуется возвращаемое значение или исключение для выброса" , когда я пытаюсь вызвать метод, в моем коде акта. Я не возражаю, это очевидно, что не так, и Rhino не «проявляет креативность», хотя это непостоянно.
// Arrange
IFoo strictMockInstance = MockRepository.GenerateStrictMock<IFoo>();
IFoo dynamicMockInstance = MockRepository.GenerateMock<IFoo>();
strictMockInstance.Expect(call => call.Bar());
strictMockInstance.Replay();
dynamicMockInstance.Expect(call => call.Bar());
dynamicMockInstance.Replay();
// Act
IResult smResult = strictMockInstance.Bar();
IResult dmResult = dynamicMockInstance.Bar();
// Assert
Assert.IsNull(smResult); // none of these results are null, both are proxy instances
Assert.IsNull(dmResult);
// ....
public interface IFoo
{
IResult Bar();
}
public interface IResult { }