2017-09-11 3 views
1

이 코드는 내 src 파일에 있고 이에 대한 단위 테스트를 작성하고 싶습니다. 각도 4 응용 프로그램에서 karma-webpack을 사용하고 있습니다.단위 테스트를 위해 typescript에서 XMLHTTPRequest를 모의 사용하는 방법

public static load(jsonFile: string): Promise<boolean> { 
console.log('calling loadinstance'); 
return new Promise((resolve: any, reject: any) => { 
    const xobj = new XMLHttpRequest(); 
    xobj.overrideMimeType('application/json'); 
    xobj.open('GET', jsonFile, true); 
    xobj.onreadystatechange =() => { 
    const readyOK = 4; 
    const responseOK = 200; 
    if (xobj.readyState === readyOK) { 
     if (xobj.status === responseOK) { 
     ConfigLoader.data = JSON.parse(xobj.responseText); 
     resolve(true); 
     } 
     else { 
     reject(`Could not load file '${jsonFile}': ${xobj.status}`); 
     } 
    } 
    }; 
    xobj.send(null); 
}); 

}

답변

0

조용한 단순한를 사용하여 A spyOn을 제안하십시오.

it('Your Service', inject([YourService], (YourService: yourService) => { 
    spyOn(yourService, 'load').and.returnValue(loadedJSON); 
+0

로드 방법 자체를 단위 테스트하고 있습니다. 우리가 테스트하는 것과 동일한 방법을 간첩해도 괜찮습니까? –

+0

서비스의 결과를 이미 알고 있다면 왜 서비스 자체를 테스트하겠습니까? 서비스는 실제 서비스를 테스트하지 않고 가짜이므로 테스트 할 수 없습니다. 따라서 응답은 가짜입니다. 구성 요소와 HTML을 테스트합니다. – Swoox