【发布时间】:2020-02-04 08:06:57
【问题描述】:
我正在尝试通过模拟 Material UI 滑块上的更改值来通过 React Hooks (useState) 测试状态更改,因为这会调用我的钩子状态更新函数。然后,我尝试通过检查页面上显示的文本来验证更改。我觉得我已经接近了,不再有语法错误对我大喊大叫,但似乎没有发生变化。
我尝试了多种不同的选择器,发现大多数在线用户都在导入他们的 Material UI 元素并使用导入的项目作为选择器。我已经尝试过使用和不使用 .as(0),值 500 作为字符串和数字,以及其他变体。
我的滑块的 onChange 方法直接使用 e.target.value 调用我的钩子状态更新方法以设置为新的状态值(并且在实际应用中一切正常)。
我可以尝试其他任何想法吗?或者也许还有另一种更好的方法来测试使用 React 钩子改变状态?
import ReactDOM from 'react-dom';
import App from './App';
import { createMount } from '@material-ui/core/test-utils';
import Slider from "@material-ui/core/Slider";
describe('App', () => {
let mount;
beforeEach(() => {
mount = createMount();
});
afterEach(() => {
mount.cleanUp();
});
it('updates the volts displayed when the slider value changes', () => {
const wrapper = mount(<App />);
wrapper.find(Slider).at(0).simulate('change', { target: { value: 500 } });
expect(wrapper.find('.volts-screen').text()).toEqual('0.500');
})
}```
ERROR
expect(received).toEqual(expected) // deep equality
Expected: "0.500"
Received: "0.000"
【问题讨论】:
-
请添加您的组件代码。
-
感谢您的留言。我最终弄清楚了,并会编辑我的帖子,以防其他人正在寻找相同问题的答案。
标签: reactjs material-ui enzyme react-hooks