如何使用 jest 模拟扩展另一个类的 ES6 类

Rya*_*McD 6 javascript unit-testing mocking jestjs es6-class

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

我已经尝试按照 jest 文档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
    }
}
Run Code Online (Sandbox Code Playgroud)
// SpecializedWorker.js

export default class SpecializedWorker extends GenericWorker {

    onSubscribe() {
        this.subscribe();
    }
}
Run Code Online (Sandbox Code Playgroud)
// __tests__/SpecializedWorker.spec.js

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

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

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

Run Code Online (Sandbox Code Playgroud)

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

我正在使用 node v.6.11 和 jest v.23.6.0