代码之家  ›  专栏  ›  技术社区  ›  S Panfilov

如何使用mocha.js测试纯JavaScript模块

  •  1
  • S Panfilov  · 技术社区  · 9 年前

    我正在尝试测试简单的前端代码。我只是想和摩卡确认一下 myModule object 和键 length 大于 0 .

    模块定义:

    var myModule = (function () {
        return {
            option: false
        };
    })();
    

    我正在努力做到这一点:

    var expect = require('chai').expect;    
    var myModule = require('<path_to_my_moule_file>');
    
    describe("myModule", function() {
        it("is myModule object", function() {
            expect(myModule).to.be.a('object');//I know it's not enough
        });
    
        it("is myModule not empty", function() {
            expect(Object.keys(myModule)).to.have.length.greaterThan(0);
        });    
    });
    

    但这当然行不通。因为我的模块不是nodejs模块 我的模块 返回简单值 {} ,但不是它的真正值(我正在尝试字符串等,但它总是 {} ). 我应该如何测试这种代码?

    使现代化 :

    如果我根本不使用模块呢? 测试的js文件可能非常简单:

    var Config = {isDev: true};
    

    它是可测试的吗?

    谢谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   Louis    9 年前

    您可以在模块末尾添加如下代码:

    if ( typeof module === 'object' && module.exports) {
        module.exports = myModule;
    }
    

    典型的浏览器环境没有 module 在全局空间中定义,因此如果您在Node中运行,这将导出模块。