【发布时间】:2015-03-07 08:01:45
【问题描述】:
问题
我正在使用 Jasmine 和 Karma(作为测试运行者)运行 Javascript 测试。问题是Ajax 请求无法正常工作。
如果我使用 Karma 运行以下 Jasmine 测试:
describe("Tests Ajax", function(done){
it("does not work", function(){
var options = {
"url": "http://www.google.com",
"method": "GET",
"complete": function(data){
console.log("Done!");
done();
}
};
$.ajax(options);
});
});
我收到以下 Karma 错误:
PhantomJS 1.9.8 (Windows 8) Tests Ajax does not work FAILED
Error: Timeout - Async callback was not invoked within timeout specified
by jasmine.DEFAULT_TIMEOUT_INTERVAL.
这意味着测试需要很长时间。我尝试在beforeEach 中将jasmine.DEFAULT_TIMEOUT_INTERVAL 设置为更长的时间,但这并不能改变结果。
如果我随后在浏览器中运行上述 Ajax 代码,它就会工作并输出“完成!”几乎立即。
以上结果让我得出结论,由于某种原因,Ajax 请求在使用 Karma 运行 Jasmine 测试时不起作用。
其他信息
操作系统:Windows 8
Karma 测试浏览器:PhantomJS(我也测试过 IE、Chrome、ChromeCanary 和 Firefox,结果是一样的)Karma 版本:0.12.31
Karma Jasmine 版本:0.3.2
我选择不使用Jasmine Ajax,因为我正在测试的代码涉及根据许多其他条件正确组合各种Ajax options,然后解释结果。因此完成一个真正的 Ajax 请求(到本地文件)是必要的。
【问题讨论】:
标签: javascript ajax jasmine karma-runner karma-jasmine