首页 > 解决方案 > Javascript Mocha测试TypeError:x不是构造函数

问题描述

我正在使用两个 js 文件对 Mocha 进行测试。

我的test.js文件如下所示:

const assert = require('assert');
const operations = require('./operations.js');

it('Calculates correct deserialization', () => {

  var leftLeft = new operations.Node('left.left', null, null);
  var left = new operations.Node('left', leftLeft, null);
  var right = new operations.Node('right', null, null);
  var root = new operations.Node('root', left, right);
  assert.equal(operations.deserialize(serialize(root)).left.left.val == 'left.left');
});

我的operations.js文件如下所示:

function Node(val, left, right) {
  this.val = val;
  this.left = left;
  this.right = right;
}

虽然不完整,但测试未能实例化 Node 对象,并以消息退出

“TypeError:操作。节点不是构造函数”

我已经尝试过

var leftLeft = new Node('left.left', null, null);

也就是说,没有 de operations.Node()。我正在使用严格模式。

标签: javascriptmocha.js

解决方案


如果要将require()文件作为模块访问,则必须导出函数:

function Node(val, left, right) {
  this.val = val;
  this.left = left;
  this.right = right;
}

module.exports = Node;

推荐阅读