如何测试React中是否调用了函数?

时间:2020-07-24 06:16:10

标签: javascript reactjs testing jestjs

项目的工作模板:https://codesandbox.io/s/blue-currying-3me1t

我设置的唯一测试是在src/App.test.js中检查名称是否已呈现。我正在尝试设置另一个测试,以检查在生成按钮之前是否调用了函数。

FontAwesome.js中,有一个registerIcons()函数可以注册网站所需的所有图标。我在Buttons.js中将此函数称为“函数”,因为它是我使用图标的地方。

我想在App.test.js中创建一个测试,以检查在registerIcons()中创建按钮之前是否调用了Buttons.js

1 个答案:

答案 0 :(得分:1)

通常可以通过manually mocking这样的FontAwesome依赖项来做到这一点:

import React from "react";
import { render } from "@testing-library/react";
import Button from "./Buttons.js";
import registerIcons from './FontAwesome'

jest.mock('./FontAwesome', () => ({
  __esModule: true
  default: jest.fn()
}))


test("registers icons", () => {
  render(<Button />);

  expect(registerIcons).toHaveBeenCalled();
});

但是,看来code sandbox does not currently support mocking。不过,您可以在自己的IDE中进行尝试。