Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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&;测试Apollo React挂钩;反应测试库_Javascript_Reactjs_Jestjs_React Apollo_React Testing Library - Fatal编程技术网

Javascript 用Jest&;测试Apollo React挂钩;反应测试库

Javascript 用Jest&;测试Apollo React挂钩;反应测试库,javascript,reactjs,jestjs,react-apollo,react-testing-library,Javascript,Reactjs,Jestjs,React Apollo,React Testing Library,我有一张使用阿波罗变异钩的表格: 从“React”导入React 从'formik'导入{useFormik} 从“../generated”导入{useLoginMutation} const LoginContainer=()=>{ const[loginMutation,{data,loading,error}]=useLoginMutation() 常数formik=useFormik({ 初始值:{ 电子邮件:“”, 密码:“”, }, onSubmit:values=>{ 逻辑置换(

我有一张使用阿波罗变异钩的表格:

从“React”导入React
从'formik'导入{useFormik}
从“../generated”导入{useLoginMutation}
const LoginContainer=()=>{
const[loginMutation,{data,loading,error}]=useLoginMutation()
常数formik=useFormik({
初始值:{
电子邮件:“”,
密码:“”,
},
onSubmit:values=>{
逻辑置换({
变量:{
输入:{
email:String(values.email).trim(),
密码:values.password,
},
},
})
},
})
返回(
{
event.preventDefault()
formik.handleSubmit(事件)
}}
>
登录
)
}
导出默认登录容器
我试图确保在用户填写表单并单击submit按钮时调用登录变异

测试有时成功运行,有时失败。我怀疑在运行expect块之前,loginMutation承诺没有得到解决

控制台还具有以下警告:

  Warning: An update to LoginContainer inside a test was not wrapped in act(...).

    When testing, code that causes React state updates should be wrapped into act(...):

    act(() => {
      /* fire events that update state */
    });
    /* assert on the output */
以下是测试:

description('login container',()=>{
让loginMutationCalled=false
常量变量={
输入:{
电邮:'test@example.com',
密码:“123”,
},
}
常量结果=()=>{
loginMutationCalled=true
返回{
数据:{
登录:{
帐户ID:'123',
},
},
}
}
常数模拟=[
{
请求:{
查询:登录,
变量,
},
结果,,
},
]
它('should call the login mutation',async()=>{
等待动作(异步()=>{
const{findByTestId}=render(
,
)
firevent.change(等待findByTestId('login-email-input'){
目标:{
值:'test@example.com',
},
})
firevent.change(等待findByTestId('login-password-input'){
目标:{
值:“123”,
},
})
等待等待(异步()=>
firevent.click(等待findByTestId('login-submit-input'),
)
})
expect(loginMutationCalled).toBe(true)
})
})

在运行断言之前,如何确保loginMutation承诺已得到解决?

请查看我的GitHub以获得
异步动作等待
。通常,我会将动作包装起来,在函数中等待,然后等待它完成。如果您觉得登录解析需要花费很多时间,可以增加
等待
数量。以GitHub URL为例,如果您仍然面临问题,请告诉我