2014-04-17 5 views
0

주입 된 PouchDB 래퍼가있는 단위 테스트를 시도하는 공장이 있습니다. 내가 겪고있는 문제는 약속을 반환하는 모의 PouchDB 서비스를 가지고 있고 약속이 해결되는 동안 (나는 successCb를 console.log로 로그 아웃 할 수 있고 올바르게 보인다), 카르마는 successCb 함수 내에서 정확한 콘솔을 기대한다. 로그 출력이 실행되고 있지 않습니다.PouchDB 서비스 약속으로 AngularJS 단위 테스트

console.log 출력이 잘 작동하지만 expect 문이 실행되지 않는 이유는 확실하지 않지만이 문제에 대한 도움은 매우 감사하겠습니다. 다음

코드 관련 조각입니다

[단위 테스트 설정]

var mockCalendarsResource, mockPouchDB; 
var mockPouchDB = function(name) { 
    this.name = name; 
    this.post = function(newCalendar, successCb, errorCb) { 
     var promise = new Promise(function(successCb, errorCb) { 
      newCalendar._id = 2; 
      successCb(newCalendar); 
     }); 
     return promise; 
    }; 
} 

beforeEach(function() { 
    module(function($provide) { 
     $provide.value('Pouch', mockPouchDB); 
    }); 
    angular.mock.inject(function($injector) { 
     mockCalendarsResource = $injector.get('Calendar'); 
    }); 
}); 

[카르마 단위 테스트 코드]

describe('The calendar resource function create', function() { 
    it('should create a new calendar', inject(function(Calendar) { 
     var result = mockCalendarsResource.create({ 
      name: "Testing" 
     }, 
     function(response) { 
      //console.log here works correctly // 
      //These are the expect statements not functioning // 
      expect(response._id).toBe(2); 
      expect(response.name).toBe('Testing'); 
      // Could put any expectation here and it will pass or not be checked // 
     }, function(err) { 

     }); 
    })); 
}); 

답변

2

난 당신이 Jasmine 2.0'sdone()를 사용한다고 생각 테스트가 끝났음을 알리기 위해 그렇지 않으면 비동기 테스트가 완료되지 않습니다.