Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在Jest测试中不调用此函数?_Javascript_Reactjs_Testing_Frontend_Jestjs - Fatal编程技术网

Javascript 为什么在Jest测试中不调用此函数?

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.

我正在尝试使用玩笑测试中的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.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})
)

…这应该行得通。

非常感谢你,布莱恩。你节省了我的时间。