I spyOn bin mit, in einem Jasmin-Test zu „hören“ zu einem Funktionsaufruf von einem Dienst,Jasmin Test Einstellung Komponente Variable
dass Funktion gibt einen beobachtbaren.
Ich erhalte den Fehler unerwartet Token U JSON;
die Fehler aus der Komponentenleitung erzeugt wird:
this.config = JSON.parse(localStorage.getItem('configuration'));
Der Artikel war local JSON.stringified;
Ich verstehe, dass dieser Fehler in der Regel ausgelöst wird, wenn JSON.parse = nicht definiert,
Also habe ich die Variable in meinem Test dh
component.config = mockConfig;
zu setzen versucht Also ..
// 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);
});
Sie müssen localStorage.getItem in Komponententests verspotten, da localStorage dort nicht verfügbar ist. –
Vielen Dank für Ihre Antwort Julia, ich habe meinen Code mit einer falschen localStorage Funktion aktualisiert, aber das Problem besteht immer noch, mit der gleichen Nachricht, gibt es etwas anderes, was ich tun muss? – Roy
Es ist schwer zu sagen, ohne den Komponentencode zu sehen, aber ich würde versuchen, Ihrem Test Async hinzuzufügen, da Sie sich mit Observablen beschäftigen. wie es ('balala', async (() => {..})); –