使用其中一个原型

时间:2018-05-13 15:50:08

标签: javascript mocha

我有以下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)
    .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() {

    });
});

然而,我得到一个错误声称得分不是构造函数,这并不让我感到惊讶。我怀疑如何开发这种结构,如果有更好的方法来实现我的目标。如果不清楚:得分是一个类,当给定一个滚动和一个得分规则时将对特定游戏进行评分,后者是该函数的原型之一。谢谢你的建议。

1 个答案:

答案 0 :(得分:1)

您的导出与导入不匹配。导出一个普通对象(full_name),该对象具有一个名为module.exports的属性,它是一个函数(构造函数)。但是另一个文件期望它导出构造函数本身。因此,要么将测试文件更改为Score,要么将其他文件更改为var Score = require('../src/Score.js').Score;。 (后者当然会影响导入此脚本的任何其他脚本。)