反应测试库-多个fireEvent不检查文本

时间:2020-07-27 12:52:32

标签: react-testing-library

我想给组件发短信。我有选择的形式和文本的段落。当我从选择6中选择时,该段落将文本更改为“ 6件”。当我从选择9中选择时,该段落将文本更改为“ 9个”等。

问题是,它只能在第一次使用。关于第二个,我在段落中有旧文本。如何刷新每个选择的更改?

const { getByTestId } = renderForm();

const textElem = getByTestId('text');
const select = getByTestId('select');


fireEvent.change(select, { target: { value: '6' } });

// works fine
expect(textElem).toHaveTextContent('6 pieces');


fireEvent.change(select, { target: { value: '9' } });

// is still 6 pieces
expect(textElem).toHaveTextContent('9 pieces');

我也尝试过表演,但结果却相同:

act(()=>{
    fireEvent.change(select, { target: { value: '6' } });
});

// works fine
expect(textElem).toHaveTextContent('6 pieces');


act(()=>{
    fireEvent.change(select, { target: { value: '9' } });
});

// is still 6 pieces
expect(textElem).toHaveTextContent('9 pieces');

我也尝试过rerender-相同的结果。

1 个答案:

答案 0 :(得分:0)

触发更改后,您需要执行一个新的getByTestId()并对此进行断言。

fireEvent.change(select, { target: { value: '9' } }); expect(getByTestId('text')).toHaveTextContent('9 pieces')