使用其原型之一初始化 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;。 (后者当然会影响导入此脚本的任何其他脚本。)