it("shows an alert", function(done) {
function showAlert() {
alert("hello");
expect(true).toBe(true);
done();
}
setTimeout(showAlert, 200);
});
当我在浏览器中运行此测试时,它不会显示警报。此外,我收到消息Error: Timeout - Async callback was not invoked within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
。如果我添加了jasmine.clock().tick(500);
行,并且已经安装了时钟,那么它将正常工作。据我(不完全)了解,Jasmine有点劫持setTimeout。我实际上希望它等待0.2秒的实时时间。
如果这实际上是不可能的,我想知道我是否仍然可以使用Jasmine 3.2.1测试不涉及promises或AJAX的异步,原始JavaScript函数。我知道他们将花费多长时间,并且我也不担心运行测试套件需要多长时间。
(我的一些函数具有回调,但是即使在其他地方也不能在此上下文中使用,并且并非所有人都需要回调。)
答案 0 :(得分:0)
啊哈...我从jasmine.clock().install();
中删除了beforeEach()
,从jasmine.clock().uninstall();
中删除了afterEach()
,然后按预期工作。我在尝试Clock类时放了这些语句,然后完全忘了它们在那儿。显然,Clock实际上确实劫持了JavaScript超时队列。