3
如果我有一個依賴關係IObjectA
其中包含PropertyA
類型IObjectB
具有公共方法Foo()
在IObjectB
。Moq驗證鏈接
爲了Verify()
Foo()被調用可以完成這兩個任務,這是正確的嗎?
Mock<IObjectA> objectA = new Mock<IObjectA>();
Mock<IObjectB> objectB = new Mock<IObjectB>();
//A
objectA.Verify(x => x.PropertyA.Foo());
//B
objectA.Verify(x => x.PropertyA);
objectB.Verify(x => x.Foo());
「B」似乎更正確,但不會驗證和違背但是我調試「步」,「A」得到正確的結果。對象A可以被詢問其屬性和那些用於調用的屬性,即使它是一個模擬類型?
感謝,是從PropertyA返回對象B的伎倆。 objectA.Verify(x => x.PropertyA.Foo())也會驗證Foo()調用,是否爲假?有些人告訴我,x.PropertyA.Foo()是一個無效的調用,因爲objectA的屬性不能用於調用,這是正確的嗎? – TheWolf 2012-02-28 03:00:31
您對A的正確和正確。我道歉,我正在閱讀和思考錯誤。我從測試的角度思考,即模擬如何處理理解的子調用,而不是來自具體實現的實際調用的視角。 – 2012-02-28 03:23:18