AngularJS,Jasmine:测试是否调用了作用域上的方法
AngularJS & Jasmine: Testing that a method on the scope was called
我在指令
中有这个代码function createChartOptions(chartData, panelIndex, legendHeights) {
if (some condition) {
scope.setCurrentBoundary({ min: chartOptions.xAxis[0].min, max: chartOptions.xAxis[0].max, isDatetimeAxis: chartOptions.xAxis[0].type === "datetime" });
}
...
}
我想测试scope.setCurrentBoundary
是否被调用,所以我写了这个测试
it('Should set current boundary', function () {
expect(scope.setCurrentBoundary).toHaveBeenCalledWith({ min: 1380589200000, max: 1398733200000, isDatetimeAxis: true });
});
问题是这给了我这个错误
Error: Expected a spy, but got undefined.
我明白为什么会发生这种情况,但我不知道正确的方法是测试我的代码中特定的if语句正在执行,然后scope.setCurrentBoundary
方法正在使用这些特定的参数调用。正确的做法是什么?
您还没有配置间谍。
spyOn(scope, 'setCurrentBoundary').andCallThrough();
或者如果你使用的是jasmine 2.0
spyOn(scope, 'setCurrentBoundary').and.callThrough();
这必须在您尝试对spy进行期望之前完成(显然在控制器初始化之后),我更喜欢在beforeEach
块中执行此操作。
相关文章:
- 在put方法之前从作用域获取数据
- Visual Studio展开方法和所有子作用域或仅折叠方法
- 为什么't我的角度控制器'在其某个方法内的作用域中的依赖项
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 在对象类上实现 jquery 作用域的最佳方法
- 从多个控制器上的指令访问作用域的正确方法
- 有没有办法迭代函数作用域内的公共方法
- 使用类/构造函数与变量方法时的作用域不同
- JavaScript 中的范围(为什么在 $.post() 方法数组的作用域是本地的?)
- 描述从回调方法获取正确的作用域
- 作用域问题反应父子方法ES6
- JavaScript——如何将作用域传递给reader.onload方法
- 数组排序方法内部的作用域
- 作用域或控制器上的Angular js difference方法
- 在全局作用域上调用Object.prototype方法
- 使用 JSON 对 js 对象进行分级/解析时,返回的方法中的函数作用域会丢失
- 用JavaScript编写块作用域的最短方法是什么
- 全局作用域映射的Javascript方法
- 将作用域变量传递给作用域方法