【问题标题】:Why do you need to call both replayAll and verifyAll when using Google Closure mocks?为什么在使用 Google Closure 模拟时需要同时调用 replayAll 和 verifyAll?
【发布时间】:2014-11-13 23:54:25
【问题描述】:

使用 Closure 的 Mocks 阅读代码,对语法感到很困惑。许多看起来像这样:

  mockChart();

  // Test
  this.mockControl.$replayAll();
  this.mainMethod(testData);

  // Verify
  this.mockControl.$verifyAll();
  // lots of asserts

我不明白为什么要同时调用重播然后再进行验证。听起来重播实际上是在做记录工作,而我本以为已经开始了。

流程与 Mockito 有点不同,Mockito 是我唯一熟悉的其他框架,我还没有找到这个级别的好文档(只是类级别的 jsdoc)。

【问题讨论】:

    标签: javascript unit-testing mocking google-closure


    【解决方案1】:

    在使用 Closure 模拟某些东西时,您可以认为有两个阶段。

    在第一个过程中,测试通知模拟框架预期的调用以及它应该如何响应它们。在此阶段调用 mockFoo.doTheThing() 将在 Foo 模拟上添加对 doTheThing 的预期调用。

    在第二个期间,模拟框架在测试运行时记录调用。在此阶段调用mockFoo.doTheThing() 将记录doTheThing 被调用的事实,并可能运行一些在第一阶段添加的测试代码。

    第一阶段从创建MockControl 对象开始,到调用$replayAll 结束。第二阶段从调用$replayAll 开始,到调用$verifyAll 结束,此时模拟框架会检查是否进行了所有预期的方法调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2021-11-22
      • 2015-04-05
      • 1970-01-01
      • 2012-10-21
      相关资源
      最近更新 更多