1
爲什麼Rhino Mocks(v3.6)生成一個代理類型,當返回類型是一個接口時,如果你不要明確指定一個返回值(我知道你應該總是指定一個返回值,但那是不同的問題)?Rhino Mocks默認返回類型?
很多網頁文章,甚至SO帖子RhinoMock : Mocks Vs StrictMocks Vs DynamicMocks,都說模擬會返回默認類型作爲結果,我會假設default(T)
。我沒有看到這種行爲(見下文)。我無法找到任何指定行爲的Rhino Mocks Documentation。
我也測試過(與下面類似)整型和類,作爲返回類型,並且這兩個測試都會拋出異常「我需要返回值或異常拋出」在我的Act代碼中調用該方法。我不介意,它顯然最新錯誤,犀牛不'創造',雖然它是不穩定的imo。
// 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 { }
Offtopic,'Expect()/ Call()'不是您在源代碼註釋中提到的AAA合成文本,使用'AssertWasCalled() '方法 – sll 2012-01-06 17:57:13