2016-04-13 6 views
0

ネストされた約束を試してみたいと思っています。ジャスミンでネストされたAngularJS約束のテスト

このようなシナリオをテストするにはどうすればよいですか?私はここで

expect(serviceB, 'create').toHaveBeenCalled(); 
    expect($state, 'go').toHaveBeenCalledWith("app.list", { id: newId }); 
    expect(serviceB, 'doSomething').toHaveBeenCalled(); 
    expect(serviceB, 'doSomethingElse').toHaveBeenCalled(); 

をテストしたいと思います

angular.module('moduleA') 
    .factory('serviceA', function(serviceB){ 

    return { 
     create: create 
    } 

    function create(){ 

    return serviceB.create().then(function(d){ 

     serviceB.doSomething(); 

     return $state.go("app.list", { id: d.id }).then(function(){ 

      serviceB.doSomethingElse(); 

     }); 

    }) 

    }; 
}); 

は私の試みです:

describe('serviceA spec', function() { 

var $rootScope, $state, serviceA, serviceB; 

beforeEach(function() { 

    $state = { 
     go: function(){} 
    } 

    serviceB = { 
     create: {}, 
     doSomething: {}, 
     doSomethingElse: {} 
    } 

    module('app', function($provide){ 
     $provide.value('serviceB', serviceB); 
     $provide.value('$state', $state); 
    }); 

    inject(function (_$rootScope_, _serviceA_) { 
     serviceA =_serviceA_; 
     $rootScope = _$rootScope_; 
    }); 
}); 

it('should create', function(){ 

    var newId = "555"; 

    spyOn($state, 'go').and.callFake(function() { 
     var deferred = $q.defer(); 
     deferred.resolve({}); 
     return deferred.promise; 
    }); 

    spyOn(serviceB, 'create').and.callFake(function() { 
     var deferred = $q.defer(); 
     deferred.resolve({ id: newId }); 
     return deferred.promise; 
    }); 

    spyOn(serviceB, 'doSomething'); 
    spyOn(serviceB, 'doSomethingElse'); 

    serviceA.create(); 

    expect(serviceB, 'create').toHaveBeenCalled(); 
    expect($state, 'go').toHaveBeenCalledWith("app.list", { id: newId }); 
    expect(serviceB, 'doSomething').toHaveBeenCalled(); 
    expect(serviceB, 'doSomethingElse').toHaveBeenCalled(); 

    $rootScope.$digest(); 

}); 

}); 

それぞれがあなたが$rootScope.$apply()を呼び出す必要があり約束した後、任意の提案は非常に

答えて

0

をいただければ幸いです約束が満ちています。

関連する問題