You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用React Testing Library测试时无法获取IonInput的value值如何解决

问题原因

IonInput 是Ionic封装的自定义Web组件,并非原生HTML输入元素。你通过data-testid="test-input"查询到的DOM节点是IonInput的外层宿主节点,并不是组件内部实际承载输入值的原生<input>元素,因此直接读取.value属性会返回undefined。

解决方案

调用IonInput组件暴露的异步方法getInputElement()获取内部原生输入元素,再读取value即可,测试代码需要调整为异步逻辑:

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', async () => {
        render(<MyComponent />);
        const ionInput = screen.queryByTestId('test-input');
        // 获取IonInput内部的原生input元素
        const nativeInput = await ionInput.getInputElement();

        expect(nativeInput.value).toBe('123');
        console.log('input.value', nativeInput.value); // 正常输出 123
    });
});

原问题运行效果截图:
运行截图


内容的提问来源于stack exchange,提问作者Charith Amila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 13:00:04