首页 > 解决方案 > 如何模拟一个使用 jest 扩展另一个类的 ES6 类

问题描述

我正在尝试模拟扩展另一个自定义类的自定义 es6 类,并且我的单元测试在尝试测试其中一个类方法时抛出错误。我已经尝试更改设置以完全解决类模拟,但也没有运气。我更愿意以“正确”的方式实施这些测试,因此我希望能得到一些帮助以使此配置正常工作。

我已经尝试按照 jest docs https://jestjs.io/docs/en/23.x/es6-class-mocks中的步骤进行操作,但是在运行 jest.mock("path/to/class") 后出现错误我尝试调用 Class.mockClear()

// GenericWorker.js

export default class GenericWorker {
    constructor(opt) {
        ...initialize worker with opt
    }

    subscribe() {
        ...do stuff
    }
}
// SpecializedWorker.js

export default class SpecializedWorker extends GenericWorker {

    onSubscribe() {
        this.subscribe();
    }
}
// __tests__/SpecializedWorker.spec.js

import SpecializedWorker from ('../SpecializedWorker');
jest.mock('../SpecializedWorker');

describ('SpecializedWorker', () => {
  beforeEach(() => {
    SpecializedWorker.mockClear();
  });

  it('should call onCallback', () => {
    ...testing stuff
  });
}); 

我的测试没有通过 beforeEach() 步骤,并声称 SpecializedWorker 上没有方法“mockClear()”

我正在使用节点 v.6.11 和 jest v.23.6.0

标签: javascriptunit-testingmockingjestjses6-class

解决方案


推荐阅读