Требовать и импортировать находит модуль, а proxyquireify нет?

Как следует из вопроса, запрос / импорт модуля работает нормально в следующих случаях:

const Session = require('../session.js').default;

или же

import Session from '../session.js');

Но я хочу заменить модуль, который требуется внутри session.js, поэтому я попытался сделать это в тесте с Proxyquireify:

const proxyquire = require('proxyquireify')(require);
const someStub = () => { return {}; };
someStub['@noCallThru'] = true;
const Session = proxyquire('../session.js', {
  'some': someStub
}).default;

Затем я получаю сообщение об ошибке, указывающее, что модуль "../session.js" не может быть найден.

PhantomJS 1.9.8 (Linux 0.0.0) ERROR
  Error: Cannot find module '../session.js'

Мой конфиг кармы такой:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['browserify', 'jasmine'],
    files: [
        'spec/**/*Spec.js'
    ],
    exclude: [
        'spec/**/PlayerSpec.js'
    ],
    preprocessors: {
      'spec/**/*Spec.js': ['browserify']
    },
    browserify: {
      debug: true,
      transform: ['babelify']
    },
    reporters: ['progress', 'dots'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false,
    concurrency: Infinity
  })
};

Что может быть не так? Вам нужна дополнительная информация?

1 ответ

Просто наткнулся на ту же проблему. Заметил, что proxyquireify не вводил require звонки рядом с proxyquire по какой-то причине, поэтому я просто сделал это сам, по крайней мере сейчас. Попробуйте использовать что-то вроде этого:

require('../session.js');
const Session = proxyquire('../session.js', ...);
Другие вопросы по тегам