如何测试是否调用了一个函数,该函数未作为 props 从另一个组件传递?
how to test if a function has been called that isn't passed as props from another component?
如何测试未作为 props 传递的函数是否已使用 jest/RTL 调用?
function CreateForm() {
const submitHandler = () => {
//do something
}
return(
<button onClick={submitHandler}/>
)
}
试试这个方法,
假设提交处理程序正在更新如下状态,
import React, { useState } from "react";
function CreateForm() {
const [isSubmit, setSubmit] = useState(false);
const submitHandler = () => {
setSubmit(true);
}
return (
<div>
<span class='status'>{isSubmit ? 'Submitted' : 'Not Submitted'}</span>
<button id="submit-btn" onClick={submitHandler} />
</div>
);
}
export default CreateForm;
检查submission
前后的状态值。
测试文件:-
import { fireEvent, render } from "@testing-library/react";
import React from "react";
import CreateForm from "./form";
describe("Create Form Component", () => {
it("should update the state on click of submit button", () => {
const {container} = render(<CreateForm />);
const status = container.querySelector('.status');
expect(status.textContent).toEqual('Not Submitted'); //Before Submission
const button = container.querySelector('#submit-btn');
fireEvent.click(button); //Submit button click
expect(status.textContent).toEqual('Submitted'); //After Submission
});
});
如何测试未作为 props 传递的函数是否已使用 jest/RTL 调用?
function CreateForm() {
const submitHandler = () => {
//do something
}
return(
<button onClick={submitHandler}/>
)
}
试试这个方法,
假设提交处理程序正在更新如下状态,
import React, { useState } from "react";
function CreateForm() {
const [isSubmit, setSubmit] = useState(false);
const submitHandler = () => {
setSubmit(true);
}
return (
<div>
<span class='status'>{isSubmit ? 'Submitted' : 'Not Submitted'}</span>
<button id="submit-btn" onClick={submitHandler} />
</div>
);
}
export default CreateForm;
检查submission
前后的状态值。
测试文件:-
import { fireEvent, render } from "@testing-library/react";
import React from "react";
import CreateForm from "./form";
describe("Create Form Component", () => {
it("should update the state on click of submit button", () => {
const {container} = render(<CreateForm />);
const status = container.querySelector('.status');
expect(status.textContent).toEqual('Not Submitted'); //Before Submission
const button = container.querySelector('#submit-btn');
fireEvent.click(button); //Submit button click
expect(status.textContent).toEqual('Submitted'); //After Submission
});
});