Javascript 酶测试中的ref输入值应为空字符串,但返回未定义的值
编辑这是一个代码沙盒: 不幸的是,我无法让酶配置在沙箱中工作,但这个问题的基本代码都在那里,单击按钮将打印输入框的Javascript 酶测试中的ref输入值应为空字符串,但返回未定义的值,javascript,reactjs,typescript,jestjs,enzyme,Javascript,Reactjs,Typescript,Jestjs,Enzyme,编辑这是一个代码沙盒: 不幸的是,我无法让酶配置在沙箱中工作,但这个问题的基本代码都在那里,单击按钮将打印输入框的typeof值 我正在尝试编写一个测试,测试单击按钮后,输入元素的值应该如何变化 下面是单击按钮组件时调用的函数,stopTimer,它调用useReducerdispatch(),以更新useReducer的状态store,下面是按钮的外观 const stopTimer = (): void => { dispatch({ payload: sta
typeof
值
我正在尝试编写一个测试,测试单击
按钮后,输入
元素的值应该如何变化
下面是单击按钮组件时调用的函数,stopTimer
,它调用useReducerdispatch()
,以更新useReducer的状态store
,下面是按钮的外观
const stopTimer = (): void => {
dispatch({
payload: state.totalSeconds,
type: 'stop',
});
...
<Button handleClick={ stopTimer } />
为了用酶测试这一点,我装载父组件
,并给输入一个初始值'hello'
。然后,我调用按钮的handleClick
属性,该属性应调用useReducer的dispatch
函数,更新存储
,然后触发useffect
,该属性应将输入值设置为空字符串
我希望输入的值在此之后是一个空字符串,但它最终是未定义的
我还使用Ezyme的debug()
尝试验证DOM在不同时间的外观。当我没有调用按钮的handleClick
,或者如果我没有调用wrapper.update()
,输入的值是'hello'
,正如预期的那样,但是debug()
显示调用update()
后输入没有值
it('单击停止按钮时应包含空字符串',()=>{
const wrapper=mount();
wrapper.find('input').props().value='hello';
act(()=>wrapper.find(Button.props().handleClick());
wrapper.update();
log(wrapper.find('input').debug());
expect(wrapper.find('input').props().value).toBe(“”);
});
在编写测试之前,您是否在浏览器中验证此功能是否按预期工作?是的,它在浏览器中按预期工作。在useffect
中,在我将输入值设置为空字符串之后,我立即使用logconsole.log(typeof ref?.current?.value)
,它记录字符串
。看看我能不能把它做成一个代码沙盒。。
const [store, dispatch] = useReducer(reducer, dashboardStore);
...
useEffect((): void => {
ref.current!.value = '';
}, [store]);
...
<input ref={ref} type='text'></input>