注意:代码从记忆中复制。
我有一个由djangoAngular生成的方法,在我的服务中有这个签名:
angular.module('myModule')
.service('PythonDataService',['djangoRMI',function(djangoRMI){
return {getData:getData};
function getData(foo,bar,callback){
var in_data = {'baz':foo,'bing':bar};
djangoRMI.getPythonData(in_data)
.success(function(out_data) {
if(out_data['var1']){
callback(out_data['var1']);
}else if(out_data['var2']){
callback(out_data['var2']);
}
}).error(function(e){
console.log(e)
});
};
}])
我想在 Jasmine 中测试我的服务,所以我必须模拟我的djangoAngular方法。我想打电话并让它返回多个数据。
这是(某种)我迄今为止尝试过的,从记忆中复制的:
describe('Python Data Service',function(){
var mockDjangoRMI,
beforeEach(module('ng.django.rmi'));
beforeEach(function() {
mockDjangoRMI = {
getPythonData:jasmine.createSpy('getPythonData').and.returnValue({
success:function(fn){fn(mockData);return this.error},
error:function(fn){fn();return}
})
}
module(function($provide) {
$provide.provide('djangoRMI', mockDjangoRMI);
});
});
it('should get the data',function(){
mockData = {'var1':'Hello Stackexchange'};
var callback = jasmine.createSpy();
PythonDataService.getData(1,2,callback);
expect(callback).toHaveBeenCalled();
})
})
但是当我放入另一个it
具有不同值的块时mockData
,只拾取其中一个。
我猜测由于操作顺序的原因,我的分配方式不正确mockData
。如何将多个数据模拟到我的 djangoRMI 函数中?