当前位置: 首页 > 面试题库 >

茉莉花-如何监视函数内的函数调用?

东门秦迟
2023-03-14
问题内容

以下是我的控制器中的内容:

$scope.addRangesAndSquare = function() {
    $scope.addLeftRange();
    $scope.addCenterSquare();
    $scope.addRightRange();
}

而且我想监视$scope.addLeftRange(),以便在$scope.addRangesAndSquare被调用时是$scope.addLeftRange()

it('expect addLeftRange to be called after calling addRangesAndSquare', function () {
    spyOn(scope ,'addRangesAndSquare');
    spyOn(scope, 'addLeftRange');
    scope.addRangesAndSquare();
    expect(scope.addLeftRange).toHaveBeenCalled();
});

如何才能做到这一点?


问题答案:

默认情况下,当您spyOnjasmine一起
使用时,它将模拟该函数,并且实际上不执行其中的任何操作。如果要在其中测试其他函数调用,则需要调用.andCallThrough(),如下所示:

spyOn($scope, 'addRangesAndSquare').andCallThrough();

应该这样做。



 类似资料:
  • 我使用文件在 Webstorm 8.0.4 中设置了茉莉花集成 这与语法突出显示的工作方式一样,我可以跳转到声明,文档显示正确。所以连接看起来很好。然而,JSHint仍然为每个关键字抱怨它没有被定义,例如 另请参见以下屏幕截图。正如您所看到的,语法突出显示很好,但我仍然收到一个错误。

  • 我正在使用jasmine 2.0。 我试图理解函数。 使用以下基本茉莉花代码: 我认为我看到的发生: 运行,安装时钟,记录安装 测试运行时,setTimeout不执行任何操作 测试等待5秒(Jasmine失败前的默认超时) 测试失败,因为从未调用。 我知道这一点,因为我得到了错误:超时-异步回调没有在jasmine指定的超时内调用。DEFAULT_TIMEOUT_INTERVAL。 然后运行,卸载

  • 如果我有一个函数: 然后我可以测试它(我使用mocha sinon),我在其中监视外部库方法,如下所示: …但如果实现将内部定义的函数传递给我监视的方法,该怎么办? 我如何测试它?

  • 问题内容: Angular服务具有多个功能。它们全部使用通过文件顶部的a定义的局部变量。 对单元进行功能测试时,有什么方法可以模拟此变量? 问题答案: 简而言之,没有。 最简单的方法是将其置于$ scope级别。或者也许作为angularjs常量 角常数 或者,如果您是一个非常疯狂的家伙,则可以制作一个脚本来更改var的值,但是严重的不要这样做,那太疯狂了。

  • 我正试图写一个Jasmine测试来覆盖一个Twitter Boostrap模态对话框。当调试器行被注释掉时,测试失败。当调试器暂停处理并且我继续时,它通过。我认为引导模式的转换导致了这个问题,因为在我进行expect调用时,模式对话框还不在DOM中。 如何在测试期间禁用转换? 谢谢 感谢Jarred,您的解决方案非常有效!这是我的工作测试:

  • Im在这段代码中使用了两个函数。用户可以通过点击“+”按钮上传图片。他们也可以通过点击“-”按钮移除图像。但文件上载功能对新行不起作用。用户不能选择任何文件,这些文件不显示在HTML中。请检查我的jsfiddle链接并帮助我。https://jsfidle.net/mhmdsohail/6mee3l8t/14/