为了测试,我使用 jest 和 react-test-renderer。测试应该很简单,但是我很难找到合适的例子。我曾尝试做类似的事情(通常我将函数保存在单独的文件中):
实用程序.js
export const childFunction = () => 'something';
const parentFunction = () => childFunction();
export default parentFunction;
utils.test.js
import parentFunction from './utils.js';
it('childFunction should be called', () => {
const childFunction = jest.fn();
parentFunction();
expect(childFunction).toBeCalled();
})
片段const childFunction = jest.fn(); 肯定行不通。在调用时,parentFunction 的主体只关心它自己的作用域。但是,如果我导入 childFunction 并执行jest.mock(childFunction),它也将不起作用,因为 jest.mock 需要一个字符串、一个module的 url,而不是函数本身。
上面的示例不起作用,我正在寻找替代方法。然而,这在使用 ShallowRenderer 渲染组件后有效。我想通过嵌套在另一个函数中的函数来实现类似的行为。
class Component extends React.Component {
componentDidMount() {parentFunction()}
render() {...}
}
const renderer = new ShallowRenderer();
describe("testing parentFunction", () => {
renderer.render(<Component/>);
it("parentFunction should be called", () => {
expect(parentFunction).toBeCalled();
});
});