angular/jasmine: Error: No deferred tasks to be flushed
angular/jasmine: Error: No deferred tasks to be flushed
我正在对我的指令之一进行单元测试,但出现以下错误
Error: No deferred tasks to be flushed
我需要测试的代码在 $timeout 中
$timeout(function () {
$window.doStuff();
});
所以当我想检查 doStuff
是否被调用时,我会做
$timeout.flush();
expect($window.doStuff).toHaveBeenCalled();
但是,现在我需要测试一种我不希望 doStuff
被调用的情况。所以我做了:
$timeout.flush();
expect($window.doStuff).not.toHaveBeenCalled(); // Notice the not here!!
但是,因为 $timeout
没有被调用,$timeout.flush()
给了我这个错误。
所以问题是,测试这种情况的首选方法是什么?
使用$timeout.verifyNoPendingTasks()
检查是否没有添加任务。
检查 angular 文档 here:
Verifies that there are no pending tasks that need to be flushed.
我正在对我的指令之一进行单元测试,但出现以下错误
Error: No deferred tasks to be flushed
我需要测试的代码在 $timeout 中
$timeout(function () {
$window.doStuff();
});
所以当我想检查 doStuff
是否被调用时,我会做
$timeout.flush();
expect($window.doStuff).toHaveBeenCalled();
但是,现在我需要测试一种我不希望 doStuff
被调用的情况。所以我做了:
$timeout.flush();
expect($window.doStuff).not.toHaveBeenCalled(); // Notice the not here!!
但是,因为 $timeout
没有被调用,$timeout.flush()
给了我这个错误。
所以问题是,测试这种情况的首选方法是什么?
使用$timeout.verifyNoPendingTasks()
检查是否没有添加任务。
检查 angular 文档 here:
Verifies that there are no pending tasks that need to be flushed.