嗨,我在单元测试用例中Assert状态时遇到问题,而它在axios调用中更新。这是我的axios调用
import axios from 'axios'
getData = () => {
axios.get('/events/sept/week2/1097338')
.then(res =>{
if(res.status == 200){
let resposne = res.data.resposne
this.setState({weekData:response})
}
})
.catch(error => {console.log(error)})
}
字符串
这是我的测试案例
test("test axios for week data",() => {
const mock = new MockAdapter (axios)
mock.onGet('/events/sept/week2/1097338').reply(200,{response:['raspberry']})
const wrapper = shallow(<Component/>)
wrapper.instance().getData()
expect(wrapper.state('weekData')).toBe(['raspberry'])
})
型
当我调用wrapper.instance().getData()时,状态weekData正在组件中更新,我已经检查过了。它在wrapper中没有更新,我的Assert失败了,比如:expected:'raspberry '],received:[ ]。如何在wrapper中更新状态我已经尝试过setError,但没有使用
1条答案
按热度按时间vmjh9lq91#
当一个调用Axios的函数不可访问时,它返回的promise应该被链接以避免竞争条件。由于
MockAdapter
没有专门提供它,因此应该额外完成:字符串
对于可直接访问的函数,它返回的promise可以被链接。
getData
是一个反模式,因为它包含了不能被链接的松散promise。它应该是:型
那么它可以被测试为:
型