Can't require Underscore with CasperJS

2019-02-18 10:01发布

问题:

I'm using CasperJS to run automated frontend tests but have run in to an issue with using other npm modules in my tests. I'm aware of patchRequire however I believe that is only to be called outside of the test environment as the test runner patches require automatically. I did include it but the results were the same. It says it can't find the module. I have confirmed the underscore module is installed in node_modules in the projects root folder.

Code

'use strict'

_ = require 'underscore'

testConfig =
    testPageUrl: ''
    testSearchTerm: 'the'

config = _.extend testConfig, require 'common/config'

Code in Javascript

'use strict';

_ = require('underscore');

testConfig = {
  testPageUrl: '',
  testSearchTerm: 'the'
};

config = _.extend(testConfig, require('common/config'));

Error

CasperError: Can't find module underscore

回答1:

So solution I eventually found was to create proxy modules that import the npm module and export it out to the casper script.

./proxies/underscore.js:

module.exports = require('underscore');

./tests/test.js

var _ = require('../proxies/underscore');