reactjs - 无法在测试中访问 IonInput 值
问题描述
我如何使用反应测试库访问 IonInput 字段的值。请参阅我的示例,如果我替换 html 文本输入而不是 IonInput 它工作正常。
import { useState } from 'react';
import { render, screen } from '@testing-library/react';
import { IonInput } from '@ionic/react';
function MyComponent() {
const [value, setValue] = useState('123');
return (
<IonInput
data-testid="test-input"
value={value}
onIonChange={(e) => setValue(e.detail.value)}
/>
);
}
describe('Test MyComponent', () => {
test('Test input change', () => {
render(<MyComponent />);
const input = screen.queryByTestId('test-input');
expect(input.value).toBe('123');
// This input.value be undefined
console.log('input.value', input.value); // undefined
});
});
解决方案
找到了解决此问题的方法。见例子。
import { useState } from 'react';
import { render, screen } from '@testing-library/react';
import { IonInput } from '@ionic/react';
function MyComponent() {
const [value, setValue] = useState('123');
return (
<IonInput
data-testid="test-input"
value={value}
onIonChange={(e) => setValue(e.detail.value)}
/>
);
}
describe('Test MyComponent', () => {
test('Test input change', () => {
render(<MyComponent />);
const input = screen.queryByTestId('test-input');
// Use input.getAttribute('value')
expect(input.getAttribute('value')).toBe('123');
});
});
可以访问这样的任何属性。
推荐阅读
- node.js - SvelteKit 端点:从 Node/Express 转换
- python - BeautifulSoup 返回无
- sql - 如何在 SQL Server 的结果中删除返回“Null”的行
- jupyter-notebook - 交互小部件旁边的 ipywidgets 输出图
- postgresql - 格式化 SQL 日期字符串
- python - 在同一输入行 Python 3.x 上打印
- java - swing JAVA中的简单窗口
- lua - 有没有办法进行更紧凑的答案检查
- wordpress - 使用python使用nonce对rest API进行Wordpress身份验证
- html - 使用 webp 角度的后备图像