Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 因果报应的茉莉花:Ajax不起作用 问题_Javascript_Ajax_Jasmine_Karma Runner_Karma Jasmine - Fatal编程技术网

Javascript 因果报应的茉莉花:Ajax不起作用 问题

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

我使用and(作为测试运行者)运行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);
    });
});
我得到以下业力错误:

        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对我来说似乎是正确的字段。我有一个类似的问题,是因为验尸官不接受这个请求——你的验尸官方法被调用了吗?这将告诉您错误发生的位置。