2017-03-16 56 views

回答

2

你可以告訴模擬一個接口,它也可以模擬其他接口。如果您通過支持另一個界面來詢問您的模擬界面,這很有用。

Verify檢查直接模擬類型的期望值,而VerifyAll也檢查其他接口的期望值。

var 
    foo: TMock<IFoo>; 
begin 
    foo := TMock<IFoo>.Create; 
    foo.Implements<IBar>; 
    foo.Setup.Expect.Once.When.DoThis; 
    foo.Setup<IBar>.Expect.Once.When.DoThat; 

    // pass mock to tested component which 
    // calls DoThis and Supports(IBar) and calls DoThat 

    foo.Verify; // checks if DoThis was called once 
    foo.VerifyAll; // also checks if DoThat on the mock as IBar was called. 
end; 
+0

所以,如果我有很多嘲笑我必須驗證他們一個接一個?沒有辦法做到這一點一槍? –

+0

我個人認爲Verify/VerifyAll是一種反模式,其他人也這麼做 - http://russellallen.info/post/2011/04/15/Moq-asserts-Verify()-vs-VerifyAll().aspx我也認爲Moq作者(Delphi Mocks的靈感來源)將其改爲使用動態模擬,然後在指定預期的調用之後進行驗證(請參閱https://github.com/moq/moq4/wiki/)。快速啓動#驗證) - 不確定Delphi Mocks是否可以做類似的事情。 –

相關問題