Jest.js fireEvent.change不会更改具有来自上下文提供程序的onChange的输入的值

pokxtpni  于 6个月前  发布在  Jest
关注(0)|答案(1)|浏览(64)

我有一个测试套件,它测试一个使用上下文的组件,我只是试图测试用户何时在表单中输入一些字符/单词,并测试这些更改是否反映在输入中,onChangeEvent是我们从上下文中提取的函数。
但是当我触发Event时,这些变化不会被反映出来,测试失败了。
这就是我如何嘲笑的形式,

const renderMockForms = () =>
{
return render(
       <ContextProvider>
            <FormPage />
       </ContextProvider>);
};

字符串
一个看起来像是

fit("Test Empty Validation when input value is invalid", async () =>
    {
        mockUseContext.mockReturnValue({ ...contextValues })

        const { container } = renderMockForms();

        await act( async () => {
            const input = container.querySelector(".inputStyles");
            expect(input).not.toBeNull();
            console.log(input)
            expect(input.value).toBe("");

            fireEvent.focus(input as Element);
            fireEvent.change(input as Element, { target: { value: '!@#$' } });
            fireEvent.blur(input as Element);

            expect(input.value).toBe('!@#$')

            await new Promise(resolve => setTimeout(resolve, 10));

           
            expect(screen.getByText("Invalid Input")).toBeTruthy();

        })

    })


我们就像这样嘲笑上下文,

jest.mock('./Context/Context.tsx', () => ({
    ...jest.requireActual('./Context/Context.tsx'),
    useContext: jest.fn()
}))

const { useContext: mockUseContext } = 
jest.requireMock('./Context/Context.tsx')


并且终端正在返回,

Expected: "!@#$"
    Received: ""

      372 |             fireEvent.blur(input as Element);
      373 |
    > 374 |             expect(input.value).toBe('!@#$')
          |                                 ^
      375 |
      376 |             await new Promise(resolve => setTimeout(resolve, 10));
      377 |


请帮助,花了大约3天的时间在这一点上,在这一点上,我是超过它

wribegjk

wribegjk1#

似乎是:

fireEvent.blur(input as Element);

字符串
导致了这个问题你能处理掉吗

相关问题