Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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-如何在promise内获得回调的代码覆盖率?_Javascript_Unit Testing_Jestjs_Code Coverage - Fatal编程技术网

Javascript Jest-如何在promise内获得回调的代码覆盖率?

Javascript Jest-如何在promise内获得回调的代码覆盖率?,javascript,unit-testing,jestjs,code-coverage,Javascript,Unit Testing,Jestjs,Code Coverage,在运行覆盖率测试时,我无法获得要覆盖的特定代码块。这是一个带有回调函数(设置react状态)的承诺, 但是我很难在覆盖率测试中正确地覆盖回调函数。下面是单元测试: TestPage.test.js it('Handle form submit for entity with processToWaitFor',()=>{ const wrapper=shallow(); wrapper.instance().setState({redirect:false}); wrapper.instance

在运行覆盖率测试时,我无法获得要覆盖的特定代码块。这是一个带有回调函数(设置react状态)的承诺, 但是我很难在覆盖率测试中正确地覆盖回调函数。下面是单元测试:

TestPage.test.js

it('Handle form submit for entity with processToWaitFor',()=>{
const wrapper=shallow();
wrapper.instance().setState({redirect:false});
wrapper.instance().submitForm();
const checkEntityFormStatus=jest.fn().mockImplementation(()=>Promise.resolve('end'));
const mockCallbackFunc=()=>{wrapper.instance().setState({redirect:true})};
expect(checkEntityFormStatus(“”,“”,mockCallbackFunc()).resolves.toBe('ended');
expect(wrapper.state().redirect).toEqual(true);
});
TestPage.js

submitForm=()=>{
const{processToWaitFor}=this.props.data;
if(processToWaitFor){
返回checkEntityFormStatus(//在下面的APIcalls.js中定义
实体,
代币
等待,
(回应)=>{
//单元测试未覆盖设置状态的回调
this.setState({redirect:true});
返回响应;
}
);
}
}
apicall.js

导出常量checkEntityFormStatus=(
实体,
代币
等待,
回拨
) => {
const fetchStatus=async(n)=>{
试一试{
const response=wait API.checkeEntityFormStatus(实体、令牌、processToWaitFor)。然后(API.handleResponse);
如果(响应==‘结束’){
返回回调(响应);
}否则{
返回新错误(“无状态”);
}
}捕获(错误){
投掷误差;
}
};
};
任何关于如何获得单元测试的想法都应该是这样的,因此我们的覆盖率测试涵盖了回调,该回调在响应从
checkEntityFormStatus
中“结束”时设置状态