Jest,Enzyme,React,Next.js,Typescript .default不是构造函数

时间:2019-08-01 10:07:33

标签: reactjs typescript unit-testing jestjs next.js

如果我的next.js页面加载没有错误,我想编写简单的测试检查。 我遵循了this tutorial,几乎可以正常运行了,但是当我运行npm run test时,simple-react-validator仍然会出现以下错误,该错误只是在幕后运行jest

  

TypeError:simple_react_validator_1。默认不是构造函数

private validator : SimpleReactValidator = new SimpleReactValidator({
     |                                                ^
  96 |         locale: 'en',
  97 |         autoForceUpdate: this,
  98 |         validators: {

在我什至无法在我的Typescript Next.js应用程序中使用simple-react-validator之前。我需要在next-env.d.ts中添加:

declare module 'simple-react-validator' { const content: any; export default content; }

然后我可以在应用程序中使用它,但是测试抱怨构造函数。

什么会导致此问题?也许我需要以某种方式明确地告诉它什么是SimpleReactValidator,但是我不知道在哪里。

1 个答案:

答案 0 :(得分:0)

一段时间后,我发现了。 如果使用打字稿,则必须将模拟包装在“默认”属性中:

jest.mock('simple-react-validator', () => {
  return {
    'default': class SimpleReactValidatorMock {
      allValid() { return true; }
      fieldValid() { return true; }
      message() { return ''; }
    }
  }
});

我在这里找到了答案: https://github.com/kulshekhar/ts-jest/issues/120#issuecomment-283653644