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,只拾取其中一个。

我猜测由于操作顺序的原因,我的分配方式不正确mockData。如何将多个数据模拟到我的 djangoRMI 函数中?

4

0 回答 0