Ich habe ein Problem mit Stubbing/Test-Funktion, die Fetch verwendet.Wie stub fetch api Anfrage
Mit einfachen Beispiel:
export const clickTimeseries => {
return fetch('...url...')
.then(response => {
if(response.status == 200)
return response.json()
else
throw 'something'
})
.then(json => {
return {
success: true,
data: json,
}
})
.catch(err => {
return {
success: false,
error: err,
}
})
}
Und mein Test:
import { expect } from 'chai'
import sinon from 'sinon'
import Promise from 'es6-promise'
Promise.polyfill()
import 'whatwg-fetch'
import clickTimeseries from './above'
const jsonOK = body => {
const mockResponse = new Response(JSON.stringify(body), {
status: 200,
headers: {
'Content-type': 'application/json'
}
})
return Promise.resolve(mockResponse)
}
describe('APIs',() => {
describe('Click timeseries',() => {
it('builds a correct data on success',() => {
sinon.stub(window, 'fetch').returns(jsonOK({stuff: [1,2,3]}))
expect(clickTimeseries()).to.eq({
success: true,
data: {stuff: [1,2,3]}
})
})
})
})
Ich erhalte Fehler:
expected { Object (, _state, ...) } to equal { success: true, data: {stuff: [ 1, 2, 3, 4 ] }}
Es sieht aus wie spendTimeseries
Renditen versprechen, statt des Ergebnisses ruft beide then
Blöcke.
Wie müssten Sie Ihren Test einrichten, damit er bestanden wird?
Dank für Ihre Zeit! Finde Kumpel. – Kocur4d