使用Browserify打包的测试模块?

7

我正在为一个使用browserify管理的模块编写测试。这是我想要测试的模块(具体来说,我想要测试calculateData函数):

require('mapbox.js');
var utils = require('./src/chart_utils');

var dashboard = {
    calculateData: function(data) {
        // functions to test
    }
};

我已经开始写一个像这样的测试:

我已开始编写以下测试:

var expect = require('chai').expect;
var Dashboard = require('../dashboard');

// describe('Dashboard', function () {
//     describe('#convertData', function () {
//         it('should calculate the x and y value', function () {
//             var combinedData = [];
//             var data = Dashboard.convertData(combinedData);
//             expect(data.length).to.equal(2); // etc
//         });
//     });
// });

但是即使前两行也给我一个错误:
node_modules/mapbox.js/node_modules/leaflet/dist/leaflet-src.js:513
    ua = navigator.userAgent.toLowerCase(),
         ^
ReferenceError: navigator is not defined

看起来它正在测试所有包含的模块文件,并找到了一个错误。

有没有办法绕过这个问题,只测试dashboard中的函数?


你试过这个吗?https://www.npmjs.com/package/browserify-mockify - marksyzm
一个快速的问题:测试代码是在浏览器还是在Node中执行?看起来它是在NodeJS上执行的,找不到navigator对象(默认附加到全局window对象上)。 - MarcoL
2个回答

0

你在browserify配置中指定了(“nodejs”兼容模式)吗?这种行为可能来自于你不需要的客户端polyfill。 此外,browserify将遵循所有“require”指令,如果你想测试的函数不需要一个模块,请勿要求它。


0
你需要使用集成了 mapbox.js 的 Dashboard 进行测试,没有 mapbox.js 的 Dashboard 进行测试是没有意义的。你在 node 中获取该错误是因为 navigator 在 node 中不存在,无法执行代码,当引用 navigator 时会导致出错。我建议你设置 Karma 进行测试运行。它可以在浏览器(或多个浏览器)中加载你的源文件和测试文件,并在那里运行你的测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接