角度茉莉花单位测试预期间谍未知未被调用...但它确实如此

时间:2017-09-28 08:59:20

标签: angularjs unit-testing spy

我正在尝试测试间谍应该被调用两次并且失败一次的情况,所以我设置了以下内容。

在控制器中有一个需要花费时间的监听器,并且只有当一天发生了变化才会调用因子,而不是时间已经改变,所以我试着按如下方式测试。

我有一个间谍

it('should call the factory only if day changes', function(){
    spyOn(factory, 'getList');
    scope.$broadcast('dateTime', {currentTime:'2017-06-30T00:00:00'});
    scope.$digest();
    expect(factory.getList).toHaveBeenCalledWith('2017-06-30');
    // so far all good, that works, but then I try this.
    scope.$broadcast('dateTime', {currentTime:'2017-06-30T01:00:00'});
    scope.$digest();
    expect(factory.getList).not.toHaveBeenCalledWith('2017-06-30');
    // and oh no, we get the error Expected spy unknown not to have been called with [ '2017-06-30' ] but it was.        
});

我检查并调试了控制器,所以我知道控制器工作正常并且没有调用工厂,因为失败的测试会建议。

我是否必须以某种方式重置间谍?我想表明,连续更新只是通过时间更改调用它不会唤起工厂,所以我该怎么做?

0 个答案:

没有答案