【问题标题】:Jest, Enzyme, React, Next.js, Typescript .default is not a constructorJest、Enzyme、React、Next.js、Typescript .default 不是构造函数
【发布时间】:2019-12-09 21:50:36
【问题描述】:

我想编写简单的测试来检查我的 next.js 页面是否加载无误。 我关注了this tutorial,我几乎让它工作了,但是当我运行npm run test 时,simple-react-validator 仍然在我的方式中出现以下错误,而jest 在幕后运行:

TypeError: simple_react_validator_1.default 不是构造函数

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 是什么,但我不知道在哪里。

【问题讨论】:

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


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2020-03-30
      • 2021-06-20
      • 2019-12-07
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多