2017-12-25 6 views
1

나는 다음과 같은 파일이 있습니다테스트는 자스민과 ES6 공장을 AngularJS와

class classAModel{ 
constructor(model) { 
    'ngInject'; 
    if (!model) return {}; 
    this.id = model.id; 
    this.name = model.name; 
    this.displayName = model.displayName; 
} 
} 
export default classAModel; 

이 코드는 다른 파일에 공장과 같이 정의된다 : module.js :

import classAModelfrom './classAModel' 
module.factory('ClassAModel', ClassAModel); 
다음 코드로 classAModel.js

이 코드는 테스트 컨텍스트가 아닐 때 완벽하게 작동합니다. Webpack을 사용하여로드되어 실행되는 번들을 만듭니다. 여태까지는 그런대로 잘됐다. 자, 문제는이 클래스를 어떻게 테스트 할 것인가입니다. 코드를 es6 스타일로 변경하기 전에 함수를 사용하여 효과적이었습니다. 테스트는 먼저 번들을로드하지만, 팩토리를 주입하려고 시도 할 때 (다시 이전과 동일) 오류가 발생합니다. 알 수없는 공급자 : modelProvider < - < - classAModel. 왜 그가 문제가 있다고 생각하는지 이해할 수는 있지만 그것을 고치는 방법을 이해할 수는 없습니다.

또한이 방법이 클래스에서 팩터 리 메서드를 만드는 대신 모델을 가져 와서 내 개체를 만드는 것이 올바른 방법인지 궁금합니다. 당신이 제공 한 정보를 바탕

감사

+0

테스트 코드를 게시 하시겠습니까? 'model'을위한 모의 인스턴스를 생성하고 그것을 생성자에 전달하려고 시도 했습니까? – Lihini

+0

classAModel을 주입 할 때 코드가 떨어집니다. 이전처럼 주입 부분에 들어 가지 않습니다. 나는 모의 서버 응답을 매개 변수로 가져 오는 팩토리를위한 예제와 그것을 초기화하는 방법이 정말 도움이 될 것이라고 생각한다. –

답변

0

, 여기 당신의 공장을 테스트하기위한 간단한 테스트 케이스이다. 희망이 당신이 찾고있는 것입니다.

import classAModel from './classAModel' 

let classAInstance; 
describe('classAModel', function() { 

    beforeEach(function() { 
     modelInstance = new Model(); 
     classAInstance = new classAModel(modelInstance); 
    }); 

    it('should have id provided by model',() => { 
     expect(classAInstance.id).toBe(modelInstance.id); 
    }); 
});