我正在研究自己的非图解算器实现。我正在用javaScript编写它,并希望使用mocha对其进行单元测试。我写了我自己的类,但不确定如何导出该类以在测试文件中使用。
这是test.js文件。
const assert = require('chai').assert;
const script = require('../script');
describe('Clue Object', function() {
var result = script.Clue(10);
it('This should make a Clue object with lb: 10', function() {
assert.equal(result.lb, 10);
});
});
这是我的主脚本文件中的类。
var exports = module.exports = {};
//----------------------------------------------------------------
// Classes
//----------------------------------------------------------------
/**
* This is the Clue class. It creates a clue object.
*
* @constructor
* @param {number} x - the length of a black run.
* @property {number} lb - the length of the black run.
* @property {number} rS - the starting cell of the range.
* @property {number} rE - the ending cell of the range.
*/
exports.Clue = function(x) {
this.lb = x;
this.rS = null;
this.rE = null;
Clue.prototype.setLB = function(x) {
this.lb = x;
}
Clue.prototype.setRS = function(x) {
this.rS = x;
}
Clue.prototype.setRE = function(x) {
this.rE = x;
}
}
当我尝试运行测试时,我不断收到TypeError:script.Clue不是函数。我对该错误有一点了解,但是我仍然不确定如何使其正确工作。
测试是查看是否创建了线索对象并在其中存储了数字。
答案 0 :(得分:1)
您没有正确定义您的课程。它应该如下所示:
function Clue(x) {
this.lb = x;
this.rS = null;
this.rE = null;
}
Clue.prototype.setLB = function(x) {
this.lb = x;
}
Clue.prototype.setRS = function(x) {
this.rS = x;
}
Clue.prototype.setRE = function(x) {
this.rE = x;
}
module.exports = {
Clue: Clue
}
请注意,默认情况下,lb
,rS
和rE
是公开的,您不需要显式的setter。您可以使用更简单的ECMAScript 2015 class notation来简化所有操作:
class Clue {
constructor(x) {
this.lb = x;
this.rS = null;
this.rE = null;
}
}
module.exports = {
Clue: Clue;
}