Javascript 使用JS对象的一个原型初始化JS对象
我有以下Javascript类Javascript 使用JS对象的一个原型初始化JS对象,javascript,mocha.js,Javascript,Mocha.js,我有以下Javascript类 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) .re
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;
我正试着用摩卡和柴来测试它,就像这样:
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是一个类,当给出一个掷骰和一个得分规则时,它将为一个特定的游戏得分,后者是函数的原型之一。谢谢您的建议。您的导出与导入不匹配。导出一个普通对象(
module.exports
),该对象具有名为Score
的属性,该属性是一个函数(构造函数)。但是另一个文件希望它导出构造函数本身。因此,要么将测试文件更改为var Score=require('../src/Score.js').Score
,或将另一个文件更改为module.exports=Score代码>。(后者当然会影响导入此脚本的任何其他脚本。)在构造函数中,您没有分配roll
param您是否导出了Score
类?您希望this.one
在测试description
回调中是什么?我确实导出了它,只是忘了在这里编写它。更新了问题。我无法控制日志分数,因为错误发生在第4行var score=new score([1,2,3,4,5],this.ones)代码>像这样导出module.exports=Score代码>