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_Ecmascript 6_Jestjs_Enzyme - Fatal编程技术网

Javascript 检查Jest中功能组件的状态值

Javascript 检查Jest中功能组件的状态值,javascript,reactjs,ecmascript-6,jestjs,enzyme,Javascript,Reactjs,Ecmascript 6,Jestjs,Enzyme,我的组件有一个状态(特殊性),我如何在测试用例中检查这个状态值 component.jsx export function SearchProviders({ changeRoute }) { const [speciality, setspeciality] = useState("Hospital"); // blah blah blah } Test.jsx const renderedModule = shal

我的组件有一个
状态
(特殊性),我如何在测试用例中检查这个状态值

component.jsx

      export function SearchProviders({ changeRoute }) {
             const [speciality, setspeciality] = useState("Hospital");
             // blah blah blah
      }
Test.jsx

const renderedModule = shallow(<SearchProviders />);
const speciality = renderedModule.find('#speciality');
speciality.simulate('change');
console.log(renderedModule.state('speciality'));
const renderedModule=shallow();
const speciality=renderedModule.find(“#speciality”);
特殊性。模拟(“变化”);
console.log(renderedModule.state('speciality');

我试过这样做,但它给我的错误是,
state()只能在类组件上调用

以下是基于@skyboyer解释的单元测试解决方案

index.tsx

import React,{useState}来自“React”;
导出函数SearchProviders({changeRoute}){
const[专科,设置专科]=使用州(“医院”);
const onInputChange=()=>{
setspeciality(speciality.toUpperCase());
};
返回(
{专业}
);
}
index.test.tsx

从“/”导入{SearchProviders};
从“React”导入React;
从“酶”中导入{浅,浅Rapper};
描述('60135675',()=>{
让包装:浅层振打器;
在每个之前(()=>{
const props={changeRoute:jest.fn()};
包装器=浅();
});
它('应该呈现',()=>{
expect(wrapper.exists()).toBeTruthy();
expect(wrapper.find('span').text()).toBe('Hospital');
});
它('应处理输入更改',()=>{
wrapper.find(“#speciality”).simulate('change');
expect(wrapper.find('span').text()).toBe('HOSPITAL');
});
});
100%覆盖率的单元测试结果:

PASS stackoverflow/60135675/index.test.tsx(6.152s)
60135675
✓ 应渲染(11ms)
✓ 应处理输入更改(2ms)
-----------|---------|----------|---------|---------|-------------------
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s
-----------|---------|----------|---------|---------|-------------------
所有文件| 100 | 100 | 100 | 100 |
index.tsx | 100 | 100 | 100 | 100 |
-----------|---------|----------|---------|---------|-------------------
测试套件:1个通过,共1个
测试:2次通过,共2次
快照:共0个
时间:8.217秒

源代码:

不测试状态的数据,但测试它如何影响渲染结果