Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 在运行jasmine测试用例时,不会命中异步调用_Javascript_Jquery_Jasmine_Karma Runner - Fatal编程技术网

Javascript 在运行jasmine测试用例时,不会命中异步调用

Javascript 在运行jasmine测试用例时,不会命中异步调用,javascript,jquery,jasmine,karma-runner,Javascript,Jquery,Jasmine,Karma Runner,我想测试一个javascript点击事件处理程序,其中有一个从服务器获取数据的ajax(异步)GET调用。 我在done()函数中有所有的业务逻辑。当我在运行jasmine测试用例时保持调试指针时,我发现它根本没有达到done()逻辑。 用茉莉花怎么处理 $('#setup').click(function () { $("div#spinner").addClass('spinner show'); $.ajax({ type: "GET",

我想测试一个javascript点击事件处理程序,其中有一个从服务器获取数据的ajax(异步)GET调用。 我在done()函数中有所有的业务逻辑。当我在运行jasmine测试用例时保持调试指针时,我发现它根本没有达到done()逻辑。 用茉莉花怎么处理

$('#setup').click(function () {

    $("div#spinner").addClass('spinner show');
    $.ajax({
        type: "GET",
        url: "http://localhost:3000/setup.cgi",
    }).done(function () {
        $("div#divLoadingSpinner").removeClass('spinner show');
        $('#setup').attr('disabled', 'disabled');
    });

});

it("should disable clicking of Edit setup", function () {
  setup = $("#setup");
  setup.click();
  console.log(">>" + setup[0].attributes.length);
  expect(setup.attr('disabled')).toBeTruthy(); 
});

您可以使用延迟对象并解析它们以达到成功(完成)场景。见下面的示例。不需要精确,您可以根据您的要求进行修改

spyOn($, 'ajax').and.callFake(function (request) {
    var d = $.Deferred();
    d.resolve(put your expected data here);
    return d.promise();
});

谢谢打字。我找到了这个。还有一件事,我的响应对象将根据请求进行更改。如何实现这一点?我曾经遇到过这个问题:),因此我在函数中使用了条件语句。i、 e.如果req==然后resolve else resolve(甚至拒绝),当我在上述函数中检查request.url时,它总是“未定义”。那个么我怎样才能根据这个做出决定呢?嗯,我从来并没有尝试过在那个假呼叫中访问URL。那个请求没有。该参数可用于调用成功/失败场景。你能试着检查一下最近的电话,然后在里面找到url吗。i、 e.spyOn($,'ajax').and.callFake(函数(请求){var d=$.Deferred();if($.ajax.calls.mostRecent().args[0][“url”]==“yourURL”){d.resolve(将预期数据放在这里);}否则{somethingelse}返回d.promise();});console.log(“URL>>”+$.ajax.calls.mostRecent().args[0][“URL”])。。。。。。这始终是“未定义的”。如何获得准确的URL?