2016-04-13 53 views
0

ile söz veriyor İç içe geçmiş sözleri test etmek istiyorum ve bunun nasıl gideceğinden emin değilim.İç içe geçmiş AngularJS, Jasmine

Böyle bir senaryoyu test etmeye nasıl başlarım? Her Eğer $rootScope.$apply() aramak zorunda söz sonra

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(); 

}); 

}); 

herhangi bir öneriniz çok

cevap

0

mutluluk duyacağız: Ben burada

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

test etmek istiyorum

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(); 

     }); 

    }) 

    }; 
}); 

benim girişimi bu yüzden sözler dolu.

İlgili konular