Reactjs 如果输入只接受数字,则进行反应测试
我正在使用react测试库创建我的测试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
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