我有点类似以下情况:
import { someFunction } from "./utils/function"
class ExampleComponent extends React.Component {
buildPages = () => {
return someFunction();
}
render() {
const pages = this.buildPages();
return <div className="container">{pages}</div>;
}
}
我的代码比上面的代码复杂得多,但是上面的内容可以归结为
我进行了以下测试:
describe("ExampleComponent", () => {
it("should match snapshot", () => {
// Somehow mock someFunction being used in the component.
expect(mount(getExampleComponent())).toMatchSnapshot();
};
});
someFunction
是昂贵的计算,我基本上希望在测试时仅将其用作jest.fn().mockReturnValue(true)
。有没有办法做到这一点?我读了一些关于开玩笑的嘲笑,但似乎没有一个能解决这个用例。我对传递someFunction
作为道具不感兴趣。
答案 0 :(得分:0)
结果很简单:
import * as Functions from "./utils/function";
describe("ExampleComponent", () => {
it("should match snapshot", () => {
jest.spyOn(Functions, "someFunction").mockImplementation(() => {
return true
})
expect(mount(getExampleComponent())).toMatchSnapshot();
};
});
import * as Functions from "./utils/function";
在样式上非常重要,因为jest.spyOn
带有两个参数,您需要将要监视的函数用作第二个参数字符串。