注: コードはメモリから複製されたものです。
私のサービスでこの署名を持つ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
、そのうちの 1 つだけがピックアップされます。
操作の順序のために、割り当て方法に何か問題があると思いmockData
ます。複数のデータを djangoRMI 関数にモックするにはどうすればよいですか?