Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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
Reactjs 如果输入只接受数字,则进行反应测试_Reactjs_React Testing Library - Fatal编程技术网

Reactjs 如果输入只接受数字,则进行反应测试

Reactjs 如果输入只接受数字,则进行反应测试,reactjs,react-testing-library,Reactjs,React Testing Library,我正在使用react测试库创建我的测试 import React,{useState}来自“React”; 常量输入=()=>{ const[state,setState]=useState(0); const onChange=(e)=>{ 设置状态(如目标值) }; 返回( {state} ); }; 导出默认输入这是因为Web API。React在引擎盖下使用Web API,并且React测试库使用Web API运行测试 expect(h1)。toHaveTextContent('123

我正在使用react测试库创建我的测试

import React,{useState}来自“React”;
常量输入=()=>{
const[state,setState]=useState(0);
const onChange=(e)=>{
设置状态(如目标值)
};
返回(
{state}
);
};

导出默认输入这是因为Web API。React在引擎盖下使用Web API,并且
React测试库
使用Web API运行测试

expect(h1)。toHaveTextContent('123')
检查
h1
textContent
属性,该属性是一个
字符串

这与
输入
属性相同s
属性始终是一个
字符串
。我不能100%确定为什么会这样,但对我来说,
HTMLInputElement.value
始终是一个
字符串
,而不管
类型

    const onChange = (e) => {
        setState(e.target.value) // e.target.value is already a string. So, the state gets a string instead of a number here.
    };
如果您确实想要一个
数字
HTMLInputElement
有另一个名为
valueAsNumber
的属性,它是一个数字

valueAsNumber

double:按顺序返回元素的值,解释为以下值之一:

  • 时间值
  • 如果无法转换,则为NaN
顺便说一下,其中之一是:

它通常对于以用户使用的方式测试应用程序组件非常有用

用户将屏幕上的数字视为文本,而不关心他们的“类型”。因此,我们根据用户看到的文本编写测试是有意义的。例如,对于某些应用程序,您可能还需要测试数字的格式是否优美,例如
1234567
而不是
1234567