2
// Balance.jsx
...
updateToken() {
const parseResponse = (response) => {
if (response.ok) {
return response.json()
} else {
throw new Error('Could not retrieve access token.')
}
}
const update = (data) => {
if (data.token) {
this.data.accessTokenData = data
} else {
throw new Error('Invalid response from token api')
}
}
if (this.props.balanceEndpoint !== null) {
return fetch(this.props.accessTokenEndpoint, {
method: 'get',
credentials: 'include'
})
.then(parseResponse)
.then(update)
.catch((err) => Promise.reject(err))
}
}
componentDidMount() {
this.updateToken()
.then(() => this.updateBalance())
}
}
// Test
it('updates the balance',() => {
subject = mount(<Balance {...props} />)
expect(fetchMock.called('balance.json')).to.be.true
})
我無法弄清楚如何使用Mocha測試上述內容。代碼是調用方法updateBalance並且提取api調用確實發生,但測試仍然失敗。如果我同步調用updateBalance(),它會傳遞...如何讓測試等待承諾解決?如何使用摩卡在reactjs中測試此異步方法調用
你能提供'updateToken'代碼嗎? –
總是'返回'承諾從每個功能。這樣你就可以輕鬆地等待它。 – Bergi
我已經添加了updateToken代碼。 我相信我從updateToken方法返回一個承諾,因爲fetch api返回一個承諾,我直接返回該承諾。我想我已經把它設置成正常工作,我只是不知道如何讓摩卡等待它... – Riina