【问题标题】:Testing modules packaged with browserify?测试用 browserify 打包的模块?
【发布时间】:2015-11-20 08:08:20
【问题描述】:

我正在为一个使用 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 中的功能?

【问题讨论】:

  • 一个简单的问题:测试代码是在浏览器中执行还是在 Node 中执行?看起来它是 NodeJS 并且找不到 navigator 对象(默认附加到全局 window 之一。

标签: javascript mocha.js browserify


【解决方案1】:

您是否在 browserify 配置中指定(“nodejs”兼容模式)?此行为可能来自您不需要的客户端 polyfill。 此外,browserfify 将遵循所有“require”指令,如果您要测试的功能不需要模块,则不需要它。

【讨论】:

    【解决方案2】:

    你需要 Dashboard 来测试,而 Dashboard 需要 mapbox.js,所以没有 mapbox.js 测试没有意义。您收到错误是因为节点中不存在导航器并且它无法执行代码 - 引用导航器时它会中断。我建议您设置Karma 进行测试运行。它可以在一个浏览器(或多个浏览器)中加载您的源文件和测试文件并在那里运行您的测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多