我正在尝试测试我的控制器在触发广播事件时打开模态。 代码工作正常,但期望总是失败:
it('should open model on idleStart', function () {
$scope.$on('idleStart', function(){
expect(dsModalSpy).toHaveBeenCalled();
});
$scope.$broadcast('idleStart');
});
我认为它失败是因为它具有广播的异步性质。控制器没有时间打开模态。 所以我在done()方法中添加并将其放在setTimeout函数
中it('should open model on idleStart', function (done) {
$scope.$on('idleStart', function(){
setTimeout(function(){
expect(dsModalSpy).toHaveBeenCalled();
done();
}, 500);
});
$scope.$broadcast('idleStart');
});
它说它现在正在通过,但我有一个怀疑所以我输入了一个调试器声明。在测试表明已成功通过之后,setTimeout中的代码才会运行。
it('should open modal on idleStart', function (done) {
$scope.$on('idleStart', function(){
setTimeout(function(){
debugger //This code is run after the test says it is completed and passed successfully.
done();
}, 500);
});
$scope.$broadcast('idleStart');
});
我想通过将do参数添加到it函数中,在调用done函数之前它不会说它已经完成。
谢谢!
答案 0 :(得分:0)
npm install karma-jasmine给了我1.x版本。
我需要使用Jasmine 2.0
npm install karma-jasmine@2_0 --save-dev