2017-09-11 5 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

静かな簡単な使用spyOnを提案してください。

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

私はロードメソッド自体をテストしています。私たちがテストしているのと同じ方法をスパイするのは大丈夫ですか? –

+0

サービスの結果を既に知っている場合、サービス自体をテストするのはなぜですか? サービスは、実際のサービスをテストせずに、偽物をテストしたため、テストされることは意図されていません。したがって、応答は偽になります。コンポーネントとHTMLをテストします。 – Swoox

関連する問題