0
私はサービスからの関数呼び出しに「聞く」ために、ジャスミンのテストでは、spyOnを使用しています
その関数は、観測を返します。
予期しないトークンU JSONエラーが発生しました。
誤差成分線から生成される:
this.config = JSON.parse(localStorage.getItem('configuration'));
のlocalStorage項目がJSON.stringifiedました。
私は未定義のJSON.parse =、
は、だから私は
component.config = mockConfig;
..だから
// Storage Mock
function storageMock() {
var storage = {};
return {
setItem: function(key, value) {
storage[key] = value || '';
},
getItem: function(key) {
return key in storage ? storage[key] : null;
},
removeItem: function(key) {
delete storage[key];
},
get length() {
return Object.keys(storage).length;
},
key: function(i) {
var keys = Object.keys(storage);
return keys[i] || null;
}
};
}
let mockConfig = JSON.stringify({
base_url:"http://image_url/",
poster_sizes:['w9', 'w100']
})
//Set storage
let m = storageMock()
m.setItem('configuration', mockConfig)
it('Should set items array with values from MoviesService',() => {
component.config = JSON.parse(m.getItem('configuration'));
let spy = spyOn(moviesService, 'getPreview').and.callFake(()=>{
return Observable.from([[{id1: 1, title: 'a'}, {id1: 2, title: 'b'}]])
})
component.ngAfterViewInit();
expect(component.items.length).toBeGreaterThan(0);
});
localStorageがそこで利用できないので、ユニットテストでlocalStorage.getItemをモックする必要があります。 –
あなたの返事ありがとうございますJulia、私はモックlocalStorage関数で私のコードを更新しましたが、同じメッセージで問題が解決しない場合は何か他にもありますか? – Roy
コンポーネントコードを見ることなく言うのは難しいですが、オブザーバブルを扱っているので、テストに非同期を追加しようとします。それ( 'balala'、async(()=> {..}))のように。 –