2013-08-27 6 views
5

Aşağıdaki ünite testlerine sahibim ve bir sebepten dolayı ikinci test diğer testlerin başarısız olmasına neden oluyor.AngularJS Yasemin Ünitesi Testleri

beforeEach(inject(function ($rootScope, _$httpBackend_, $controller, $location, mockedResource) { 
    scope = $rootScope.$new(); 
    httpBackend = _$httpBackend_; 
    locationService = $location; 

    ctrlDependencies = { 
     $scope: scope, 
     resource: mockedResource, 
    } 

    var ctrl = $controller('myController', ctrlDependencies); 
})); 

it('should redirect to a new page', function() { 
    scope.pageRedirectFunction(); 
    expect(locationService.path()).toBe('/newpage') 
}); 

it('should delete an epic resource', function() { 
    httpBackend.expectGET('/api/v1/epic/1').respond({}); 
    httpBackend.expectDELETE('/api/v1/epic/1').respond({}); 

    // Run the deletion function 
    scope.deleteEpicResource() 

    httpBackend.flush() // This line seems to be the rebelious one 

    expect(scope.epicResources.length).toEqual(0) 
}) 

Ben hatalara neden görünüyor hattını anlamaya başarmış ve bu httpBackend.flush() hat. Yıkama işlevi neden garip davranışlara neden oluyor?

ben terminalde komutunu karma start çalışmasını olsun gerçek hata şöyledir: bir süre sonra

Delaying execution, these browsers are not ready: Chrome 29.0 .... 

Chrome oturumu sonra çöküyor.

+0

Ne tür bir hata yaptınız? Bu olmadan kimse bunu tahmin bile edemez. – zsong

+0

Elbette! Ne korkunç bir hata. Hata ile güncelleniyor ... – Sneaksta

+0

Ne olduğunu görmek için, Karma'nın günlük seviyesini, hata ayıklamak için artırmaya çalışın. – madhead

cevap

2

Biraz bilinen ipucu: Ayrıca, ngMocks modülü yüklemek için denemek isteyebilirsiniz

açıkça isteği aramıyoruz Eğer sizin o istek ateş etmedim sanki

sizin httpBackend.flush() çağrısından önce scope.$digest() çalıştırmayı deneyin (eğer flush() çağırdığınızda) görünmek yapar, böylece testi (yani başka bir işlevi aracılığıyla çağırmak), istek olduğunu, Açısal tarafından sindirilir olmayacak hile yapabilir. Daha fazla bilgi için bkz. this thread.

+0

Bunu bir süre önce tamir ettim, ama nasıl düzeltdiğimi hatırlamadım o. Cevabınızı okuduktan sonra, ihtiyacım olan tüm talepler için flush() aramamayı fark ettim. Bu çoğunlukla bir sorundu çünkü kontrol cihazım yüklenir yüklenmez API istekleri yükleniyordu, ancak onları unutmuştum. – Sneaksta

+0

$ digest() öğesi eklemek, Chrome'un çökmesine ilişkin endişeyi giderir mi? – kfitzpatrick

0

Angular-mocks.js, testlerinizden önce eklenmiş mi? zaman uyumsuz yasemin ile istek ve angularjs alay/testlerle ilgili

beforeEach(module("ngMock"));