我正在尝试测试间谍应该被调用两次并且失败一次的情况,所以我设置了以下内容。
在控制器中有一个需要花费时间的监听器,并且只有当一天发生了变化才会调用因子,而不是时间已经改变,所以我试着按如下方式测试。
我有一个间谍
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.
});
我检查并调试了控制器,所以我知道控制器工作正常并且没有调用工厂,因为失败的测试会建议。
我是否必须以某种方式重置间谍?我想表明,连续更新只是通过时间更改调用它不会唤起工厂,所以我该怎么做?