单元测试通用/同构节点包文件

Unit testing universal/isomorphic node package file

本文关键字:文件 包文件 节点 同构 单元测试      更新时间:2024-05-13

我正在尝试创建一个通用javascript(形式上称为同构javascript)包。这意味着它应该作为一个节点模块工作,但也可以在浏览器中平稳运行

假设它看起来像这样:

// awesome.js
module.exports = function () {
    return 10;
}

安装:

$> npm install awesome

并包括它:

// index.js
var awesome = require('awesome')

要在浏览器中使用它,您必须使用browserify

$> ./node_modules/.bin/browserify index.js -o bundle.js",

到目前为止没有问题。然而,当涉及到使用Karma和Jasmine的单元测试时,我得到了一个未定义的module(这是awesome.js中的module变量)

因果报应配置看起来像:

gulp.task('test', function () {
    var Server = require('karma').Server;
    new Server({
         autoWatch: true,
         browsers: [
            'Chrome'
         ],
         coverageReporter: {
             type: 'lcov',
             dir: 'coverage/'
         },
         frameworks: [ 'browserify', 'jasmine'],
         files: [
             'awesome.js',
             'tests/spec-helpers.js',
             'tests/awesome.spec.js'
         ],
         junitReporter: {
              outputFile: 'target/junit.xml'
         },
         preprocessors: {
             'awesome.js': 'coverage',
             'tests/awesome.spec.js': ['browserify']
         },
         browserify: {
             debug: true,
             transform: [ 'brfs' ]
         },
         reporters: [
             'junit',
             'coverage'
         ],
         singleRun: false,
     }).start();
});

令人敬畏的spec.js

var awesome = require('awesome');
describe('Awesome', function () {
    it('should return 10', function () {
         expect(awesome()).toBe(10);
    });
});

由于某种原因,browserify似乎无法正常工作。有什么建议吗?

此外,欢迎对universal javascript进行任何改进!

这是不可能的。Karma将无法理解nodejs(服务器端)代码。因果报应在浏览器上运行。