我在指令
中有这段代码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
方法。这样做的正确方法是什么?
答案 0 :(得分:1)
你还没有配置间谍。
spyOn(scope, 'setCurrentBoundary').andCallThrough();
或者如果您使用的是jasmine 2.0
spyOn(scope, 'setCurrentBoundary').and.callThrough();
这必须在您尝试对间谍做出期望之前完成(显然在控制器初始化之后),我更喜欢在beforeEach
块中执行此操作。