我发现了测试 JQuery 动画的问题。问题是在模式期间 JQuery在效果执行后jasmine.Clock.useMock()
不会调用函数。complete
逻辑:
$('#mydiv').fadeOut('normal', function () {
// this is called AFTER the test ends
// but should be called after jasmine.Clock.tick(1000);
$(this).remove();
})
规格:
it('should pass', function () {
jasmine.Clock.useMock();
// call logic
jasmine.Clock.tick(1000);
// using jasmine-jquery matcher
expect($('#mydiv')).not.toExist();
})
测试失败并显示以下消息:
Expected '<div id="mydiv" style="opacity: 0; "></div>' not to exist.
这意味着效果正确结束,但complete
没有调用函数。它实际上在测试运行程序完成执行后被调用。
我不确定向 JQuery 或 Jasmine 开发人员报告是否是错误。也许有人会建议解决方法。
我的目标是测试该元素在逻辑执行后被删除,所以我需要not.toExist()
匹配器。