0

I have the following file to test which is the migration_repository.js

import {getDatabaseName}  from "./maria_db_connector"

export default class MigrationRepository {
    getExistingVersions() {
        return getDatabaseName();
    }

I am trying to mock the following module maria_db_connector.js:

export function getDatabaseName() {
    return process.env.KOA_DATASOURCE_DATABASE;
}

and the following test file:

import MigrationRepository from './migration_repository.js'
import proxyquire from 'proxyquire';
const proxy = proxyquire.noCallThru(); 

describe('MigrationRepository', function () {

  beforeEach(function () {
    proxy.load('./migration_repository.js', {
      './maria_db_connector.js': {
        getDatabaseName: function () { return "test" },
      }
    })
  });
}

However, when I run this test with mocha using the following command mocha *spec.js I see it is failing in proxyquire on the following line in the load function

  return this._withoutCache(this._parent, stubs, request, this._parent.require.bind(this._parent, request))

With the error message

 TypeError: Cannot read properties of undefined (reading 'require')

For added context I have the following devDependencies

  "devDependencies": {
    "mocha": "^10.2.0",
    "proxyquire": "^2.1.3",
    "sinon": "^15.0.2"
  }

and I using node v18.15.0

So how do I populate the parent context with ES6 import statements?

piperRyan
  • 397
  • 1
  • 3
  • 11
  • Can't reproduce your issue. Please provide a https://stackoverflow.com/help/minimal-reproducible-example. Show the code of `migration_repository.js` and `maria_db_connector.js` file – Lin Du Mar 23 '23 at 02:59
  • Hi @LinDu thanks for the input, made the adjustment/made it more clear. – piperRyan Mar 23 '23 at 23:14

0 Answers0