gpt4 book ai didi

ajax - Jasmine Ajax request.respondWith 不工作

转载 作者:行者123 更新时间:2023-12-02 01:42:44 24 4
gpt4 key购买 nike

我正在使用 Jasmine 2.0.4 和 jasmine-ajax 2.99.0 来尝试测试调用 Web 服务的模块。代码如下:

    define(['models/data-service', 'models/admin', 'models/contest', 'models/participant', 'ContestResponse'],
function(dataService, admin, Contest, Participant, ContestResponse){
"use strict";

describe("Data Service Tests", function(){
var onSuccess, onFailure, request;

describe("on new contests loaded", function(){
beforeEach(function(){
jasmine.Ajax.install();
});

it("calls onSuccess with an array of Contests", function(){
onSuccess = jasmine.createSpy('onSuccess');
onFailure = jasmine.createSpy('onFailure');
dataService.getContests()
.done(onSuccess)
.fail(onFailure);

request = jasmine.Ajax.requests.mostRecent();
expect(request.url).toBe('/api/contest');
expect(request.method).toBe('GET');
request.respondWith(ContestResponse.getResponse().contest.success);
expect(onSuccess).toHaveBeenCalled();
var successArgs = onSuccess.calls.mostRecent().args[0];
expect(successArgs.length).toEqual(4);
});
});
});
});

一切正常,直到它到达我尝试调用请求的 respondWith 方法的行。尽管我可以看到从 jasmine.Ajax.requests.mostRecent() 返回的对象是 FakeXMLHttpRequest 类型,但 respondWidth 被标记为未定义。有任何想法吗?谢谢

[更新]我已经能够缩小范围。看起来 mock-ajax.js 文件没有被加载。我安装了 karma-jasmine-ajax 节点模块,并将 jasmine-ajax 添加到 karma.conf.js 的框架数组中,如下所示:

frameworks: ['jasmine-ajax','jasmine', 'requirejs'],

还有什么我需要做的吗?

[RANT]难怪为什么很少有开发人员使用 javascript 运行单元测试[/RANT]

最佳答案

我遇到了同样的问题,看起来最新版本没有 respondWith 方法。

降级 jasmine-ajax 插件就成功了:

npm install karma-jasmine-ajax@0.1.1

现在我可以看到 respondWith 工作正常。

关于ajax - Jasmine Ajax request.respondWith 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27510586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com