我使用Jasmin2.0.4和Jasmin-Ajax2.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被标记为未定义。有什么想法吗?谢谢
最新消息我已经缩小了范围。看起来模拟-ajax.js文件没有加载。我安装了业力-jasmine节点模块,并将jasmine添加到karma.conf.js的框架数组中,如下所示:
frameworks: ['jasmine-ajax','jasmine', 'requirejs'],还有什么需要我做的吗?
难怪很少有开发人员使用javascript /RANT运行单元测试。
发布于 2015-01-23 02:12:48
我也面临着同样的问题,最近的版本似乎没有respondWith方法。
降低jasmine-ajax插件的评级是一个诀窍:
npm install karma-jasmine-ajax@0.1.1现在我可以看到respondWith工作得很好。
发布于 2015-04-07 21:36:12
这似乎是jasmine库中的一个过渡性问题。升级到最新版本(撰写本文时为3.1.0)将解决您的问题。
npm install jasmine-ajax
bower install jasmine-ajax发布于 2015-04-28 20:37:43
如果由于冲突而无法更改jasmine-ajax版本(例如:使用Jasminin1.3或其他依赖于不同版本的jasmine-ajax的内容),则可以使用:jasmine-ajax而不是request.respondWith
https://stackoverflow.com/questions/27510586
复制相似问题