gpt4 book ai didi

javascript - 为什么在使用 Google Closure 模拟时需要同时调用 replayAll 和 verifyAll?

转载 作者:行者123 更新时间:2023-12-05 07:57:31 26 4
gpt4 key购买 nike

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

  mockChart();

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

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

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

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

最佳答案

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

首先,测试会告知模拟框架预期的调用以及它应如何响应这些调用。在此阶段调用 mockFoo.doTheThing() 将在 Foo 模拟上添加对 doTheThing 的预期调用。

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

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

关于javascript - 为什么在使用 Google Closure 模拟时需要同时调用 replayAll 和 verifyAll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com