0

注: コードはメモリから複製されたものです。

私のサービスでこの署名を持つ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 関数にモックするにはどうすればよいですか?

4

0 に答える 0