Inversifyjs: TypeScript, InversifyJS and Jest: TypeError: Cannot read property 'constructor' of null.

Created on 17 Nov 2018  路  5Comments  路  Source: inversify/InversifyJS

When using InversifyJS with Jest, creating a container with mock dependencies results in the error:

TypeError: Cannot read property 'constructor' of null.

Expected Behavior

A container should be able to handle mock depenencies and resolve them without errors.

Current Behavior

A container cannot handle mock depenencies and resolve them without errors.

Possible Solution

Seems related to this issue: https://github.com/inversify/InversifyJS/issues/984

Steps to Reproduce (for bugs)

I've created a minimal example that reproduces the issue:
https://github.com/peasey/minimal-typescript-inversify-jest

Context

I cant use InversifyJS and Jest together, so unless this can be fixed I'll need to find another DI container or test framework, neither of which are ideal.

Your Environment

Stack trace

TypeError: Cannot read property 'constructor' of null

  at getClassPropsAsTargets (node_modules/inversify/lib/planning/reflection_utils.js:82:75)
      at Array.forEach (<anonymous>)

Most helpful comment

Same problem.

Helped this quick hack in test file Object.getPrototypeOf(EventEmitter.prototype).constructor = Object;

All 5 comments

I've been able to get this working by binding with toDynamicValue instead. I've updated the minimal example on a new branch: https://github.com/peasey/minimal-typescript-inversify-jest/tree/using-dynamic-value

Leaving the issue open for now.

I am having the same problem in this environment:

  • Mac OSX 10.13.6
  • node 10.15.0
  • typescript 3.2.4
  • jest 23.6.0 and 24.0.0

^ Frankly I cannot use toDynamicValue... :-/ Do you have an idea when this may be fixed?

Also appears in jest 24.1.0
typescript 3.3.3
node 10.15.0

I cannot use toDynamicValue

Same problem.

Helped this quick hack in test file Object.getPrototypeOf(EventEmitter.prototype).constructor = Object;

Same problem.

Helped this quick hack in test file Object.getPrototypeOf(EventEmitter.prototype).constructor = Object;

You are a genius.

Was this page helpful?
0 / 5 - 0 ratings