reactjs - Jest 类型错误 : is not a constructor in Jest. 模拟

标签 reactjs jestjs babel-jest jest-fetch-mock

我正在尝试使用 jest 编写单元测试用例,并且需要模拟以下模式。我收到 TypeError: is not a constructor。

用例:我的用例如下所述

我的组件.js :

 import serviceRegistry from "external/serviceRegistry";


        serviceRegistry.getService("modulename", "servvice").then(
              service => {
                let myServiceInstance = new service();
                myServiceInstance.init(p,d) 
        })

我的组件.spec.js
jest.mock('external/serviceRegistry', () => {
      return {
        getService: jest.fn(() => Promise.resolve({
          service: jest.fn().mockImplementation((properties, data, contribs) => {
            return {
              init: jest.fn(),
              util: jest.fn(),
              aspect: jest.fn()

            };
          })
        }))
      };
    }, {virtual: true});

最佳答案

Promise返回者 getService正在解析为 objectservice prop 设置为您的构造函数模拟,但您的代码期望它直接解析为您的构造函数模拟。

更改您的 external/serviceRegistry对此进行模拟,它应该可以工作:

jest.mock('external/serviceRegistry', () => {
  return {
    getService: jest.fn(() => Promise.resolve(
      jest.fn().mockImplementation((properties, data, contribs) => {
        return {
          init: jest.fn(),
          util: jest.fn(),
          aspect: jest.fn()
        };
      })
    ))
  };
}, {virtual: true});

关于reactjs - Jest 类型错误 : is not a constructor in Jest. 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54807916/

相关文章:

vue.js - 如何在使用 jest 测试 vuetify 组件时解决 'SyntaxError: Unexpected identifier'

javascript - 如何通过异步函数设置 react 父组件状态,然后将此状态作为 Prop 传递给子组件?

javascript - ReactCSSTransitionGroup:transitionAppear 不起作用

javascript - React 如何去除 Material-UI Select 的动画

react-native - Jest 快照测试 : how to ignore part of the snapshot file in jest test results

javascript - 与 React Native 开 Jest 得到问题

javascript - 如何在输入类型日期中设置占位符 [React]

jestjs - 自定义节点环境中意外的 token 导入

javascript - 开 Jest ,测试输出字符串

jestjs - .flat 不仅仅是 Jest 功能