从node.js模块导出函数/类

时间:2014-03-24 17:04:40

标签: javascript node.js module export mocha

我有一个我在Javascript中定义的课程:

var CoolClass = function() {
  this.prop1 = 'cool';
  this.prop2 = 'neato';
}

CoolClass.prototype.doCoolThings = function(arg1, arg2) {
  console.log(arg1 + ' is pretty ' + this.prop1;
}

modules.export = CoolClass;

我需要能够导出这个,所以我可以使用require在Mocha中测试它。但是我还想让这个类在浏览器中实例化。

截至目前,我可以将其加载到浏览器中,实例化它并且它很好用。 (显然我在控制台中遇到错误,因为他们没有理解关键字' export'或' module')

通常我使用

导出多个单个函数
exports.someFunction = function(args){};

但是现在我想导出那个函数,我没有定义通过原型链添加的任何方法。

我已经尝试过module.exports,但似乎也无法做到这一点。我的Mocha规范需要这样的文件:

var expect = require('chai').expect;
var coolClass = require('../cool-class.js');
var myCoolClass;

beforeEach(function() {
  myCoolClass = new coolClass();// looks like here is where the issue is
});

describe('CoolClass', function() {
  // if I instantiate the class here, it works.
  // the methods that were added to CoolClass are all undefined

});

看起来我的摩卡之前的每一个都被它绊倒了。我可以在实际规范中实例化该类,并且它可以正常工作。

1 个答案:

答案 0 :(得分:1)

在mochajs上,您需要将beforeEach放在父describe内,并将您的具体方案放在子describe上。否则,beforeEach中完成的操作无法被describe识别。你的myCoolClass只是作为一个全局变量处理,没有真正实例化,这就是原型函数未定义的原因。

所以有点像(对不起,我只是在移动设备上):

var MyCoolClass = require('mycoolclass.js');
describe('MyModule', function () {
  var myCoolClass;

  beforeEach(function () {
    myCoolClass = new MyCoolClass();
  });

  describe('My Scenario 1', function () {
    myCoolClass.doSomethingCool('This'); //or do an assert
   });
});

您可以查看其documentation了解更多详情。