Javascript 为什么在Jest测试中不调用此函数?
我正在尝试使用玩笑测试中的React函数。它可以在生产和开发环境中完美地工作,但Jest说它没有调用。 因此,测试中的状态返回0数据长度,而它应该是1强> 这就是功能:Javascript 为什么在Jest测试中不调用此函数?,javascript,reactjs,testing,frontend,jestjs,Javascript,Reactjs,Testing,Frontend,Jestjs,我正在尝试使用玩笑测试中的React函数。它可以在生产和开发环境中完美地工作,但Jest说它没有调用。 因此,测试中的状态返回0数据长度,而它应该是1 这就是功能: addStory(story) { const idToken = this.state.user.idToken if (!idToken) return const storyProps = { Title: story.title, Body: story.body, UserEntityKey: story.
addStory(story) {
const idToken = this.state.user.idToken
if (!idToken) return
const storyProps = {
Title: story.title,
Body: story.body,
UserEntityKey: story.userEntityKey,
AuthorName: this.state.user.displayName,
AuthorPicture: this.state.user.photoURL
}
// Axios call should return Promise result for proper testing.
const promise = Axios.post(apiUrl, storyProps, { headers: { 'Authorization': idToken } })
promise.then(res => res.data)
promise.then(newStory => {
newStory.data.AuthorName = this.state.user.displayName
newStory.data.AuthorPicture = this.state.user.photoURL
this.setState(({ data }) => {
data.unshift(newStory.data)
return { data: data, isAddStoryVisible: false }
})
})
promise.catch((error) => {
console.error(error)
})
return promise
})
这就是测试:
let story={
标题:“标题1”,
正文:“正文1”,
UserEntityKey:“UserEntityKey”,
密钥:“故事密钥”,
}
test('基于模拟后端响应添加的故事',async()=>{
MockAxios.post.mockImplementationOnce(()=>
承诺.决心(故事)
)
const storyApp=shallow();
//无idToken测试
//Axios调用应返回承诺结果。
等待storyApp.instance().addStory(故事)
expect(storyApp.state().data.length).toEqual(0)
storyApp.setState((上一个)=>{
上一个用户={
idToken:“asdf”,
displayName:“测试名称”,
photoURL:“测试照片”
}
返回上一个
})
//使用idToken进行测试
等待storyApp.instance().addStory(故事)
expect(storyApp.state().data.length).toEqual(1)
})
看起来这只是一个打字错误
更改模拟方式MockAxios。将发布到以下位置:
MockAxios.post.mockImplementationOnce(()=>
Promise.resolve({data:story})
)
…这应该行得通。非常感谢你,布莱恩。你节省了我的时间。