Javascript 因果报应的茉莉花:Ajax不起作用 问题
我使用and(作为测试运行者)运行Javascript测试。问题在于,Javascript 因果报应的茉莉花:Ajax不起作用 问题,javascript,ajax,jasmine,karma-runner,karma-jasmine,Javascript,Ajax,Jasmine,Karma Runner,Karma Jasmine,我使用and(作为测试运行者)运行Javascript测试。问题在于,Ajax请求无法正常工作 如果我使用Karma运行以下Jasmine测试: describe("Tests Ajax", function(done){ it("does not work", function(){ var options = { "url": "http://www.google.com&q
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);
});
});
我得到以下业力错误:
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.
这意味着测试需要很长时间。我已尝试在每个之前的中将jasmine.DEFAULT\u TIMEOUT\u INTERVAL
设置为更长的时间,但这不会改变结果
如果我在我的浏览器中运行上述Ajax代码,它几乎可以立即工作并输出“完成”
以上结果使我得出结论,出于某种原因,当使用Karma运行Jasmine测试时,Ajax请求不起作用
补充资料
OS:Windows 8
Karma测试浏览器:PhantomJS(我也用IE、Chrome、ChromeCanary和Firefox进行了测试,结果是一样的)
业力版本:0.12.31
噶玛茉莉花版本:0.3.2
我之所以选择不使用,是因为我正在测试的代码需要根据许多其他条件正确地组合各种Ajax选项,然后解释结果。因此,完成一个真正的Ajax请求(对本地文件)是必要的。为了解决这个问题,我决定运行测试,并在后台运行一个服务器,为我的内容提供服务
我用它来做服务器。我在设置时遇到了两个问题。第一个是默认情况下,grunt http服务器不允许跨源请求。要允许它们,您必须在grunt任务设置中添加一个带有以下标题的标题选项:
{
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
}
我遇到的第二个问题是,grunthttp服务器
在body
字段中返回数据no,但在responseText
或responseJSON
字段中返回数据no responseText对我来说似乎是正确的字段。我有一个类似的问题,是因为验尸官不接受这个请求——你的验尸官方法被调用了吗?这将告诉您错误发生的位置。