【发布时间】:2019-07-24 10:30:33
【问题描述】:
我有一个 Input 组件,它接受一个 prop 方法并在用户输入内容时调用它。代码本身按预期工作,但由于某些原因,测试失败。它认为没有调用 prop 方法。为什么会这样?出于测试目的,我使用 Jest 和 react-testing-library。
第二个问题。在实际应用中,我的想法是测试传递给该 prop 方法的参数。是否认为是实现测试(我知道我应该测试它)?
Input.js
export default function Input({ onChange }) {
return <input onChange={onChange} />;
}
测试
import React from "react";
import { render, act, cleanup, fireEvent } from "react-testing-library";
import Input from "./input";
describe("Input tests", () => {
afterEach(cleanup);
it("Should call prop function", () => {
const onChange = jest.fn();
const { getByTestId } = render(<Input onChange={onChange} />);
const input = getByTestId("input");
act(() => {
fireEvent.change(input, { target: { value: "Q" } });
});
expect(onChange).toHaveBeenCalled();
});
});
【问题讨论】:
-
因为change意味着它的状态发生了变化,如果要触发change,直接赋值比如input.value="xxx"怎么样?
标签: reactjs unit-testing jestjs react-testing-library