【问题标题】:How to verify multiple mock expectations with Delphi Mocks?如何使用 Delphi Mocks 验证多个模拟期望?
【发布时间】:2017-03-16 12:20:56
【问题描述】:

Delphi Mocks 中的 mock.verify 和 mock.verifyAll 有什么区别?它是否也验证了其他模拟的期望? 我想验证为当前单元测试创​​建的所有模拟的所有期望。

【问题讨论】:

    标签: delphi verify delphi-mocks


    【解决方案1】:

    您可以告诉一个接口的模拟,它也可以模拟其他接口。如果您模拟的接口通过 Supports 询问另一个接口,这很有用。

    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;
    

    【讨论】:

    • 所以如果我有很多模拟我必须一一验证它们?有没有办法一口气做到这一点?
    • 我个人认为 Verify/VerifyAll 是一种反模式,其他人也这样做 - russellallen.info/post/2011/04/15/… 我也认为 Moq 作者(Delphi Mocks 的灵感来自)将其改为使用动态模拟,然后在指定预期调用后进行验证(请参阅github.com/moq/moq4/wiki/Quickstart#verification) - 不确定 Delphi Mocks 是否可以做类似的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多