使用其原型之一初始化 JS 对象
Initialize JS object with one of its prototypes
我有以下Javascriptclass
var Score = function (roll, category) {
this.roll = [];
this.category = category;
};
Score.prototype.getRoll = function () {
return this.roll;
};
Score.prototype.ones = function() {
this.roll.filter((i) => i == 1)
.reduce((sum, i) => sum + i);
};
module.exports.Score = Score;
我正在尝试使用 Mocha 和 Chai 进行测试,如下所示:
var Score = require('../src/Score.js');
describe('Score', function() {
var score = new Score([1,2,3,4,5], this.ones);
expect(score).to.be.of.type(Score);
describe('ones', function() {
});
});
但是,我收到一个错误,声称 Score 不是构造函数,这并不让我感到惊讶。我怀疑如何开发这个结构,以及是否有更好的方法来实现我的目标。如果不清楚: Score 是一个 class ,它会在给定掷骰和得分规则时为特定游戏计分,后者是该函数的原型之一。感谢您的建议。
您的导出与导入不匹配。您导出一个普通对象 (module.exports
),它有一个名为 Score
的 属性,它是一个函数(构造函数)。但是另一个文件期望它导出构造函数本身。因此,要么将测试文件更改为 var Score = require('../src/Score.js').Score;
,要么将另一个文件更改为 module.exports = Score;
。 (后者当然会影响导入此脚本的任何其他脚本。)
我有以下Javascriptclass
var Score = function (roll, category) {
this.roll = [];
this.category = category;
};
Score.prototype.getRoll = function () {
return this.roll;
};
Score.prototype.ones = function() {
this.roll.filter((i) => i == 1)
.reduce((sum, i) => sum + i);
};
module.exports.Score = Score;
我正在尝试使用 Mocha 和 Chai 进行测试,如下所示:
var Score = require('../src/Score.js');
describe('Score', function() {
var score = new Score([1,2,3,4,5], this.ones);
expect(score).to.be.of.type(Score);
describe('ones', function() {
});
});
但是,我收到一个错误,声称 Score 不是构造函数,这并不让我感到惊讶。我怀疑如何开发这个结构,以及是否有更好的方法来实现我的目标。如果不清楚: Score 是一个 class ,它会在给定掷骰和得分规则时为特定游戏计分,后者是该函数的原型之一。感谢您的建议。
您的导出与导入不匹配。您导出一个普通对象 (module.exports
),它有一个名为 Score
的 属性,它是一个函数(构造函数)。但是另一个文件期望它导出构造函数本身。因此,要么将测试文件更改为 var Score = require('../src/Score.js').Score;
,要么将另一个文件更改为 module.exports = Score;
。 (后者当然会影响导入此脚本的任何其他脚本。)