首页 > 解决方案 > 在 JavaScript、Mocha 和 Chai 中测试类函数

问题描述

我创建了一个简单的机器人,并想测试一个名为getComputerChoice. 我正在使用 mocha 和 chai 来测试这个功能,但是当我运行它时,它说TypeError: getComputerChoice is not a function. 我试图找到一个解决方案,但没有任何运气。

下面是代码:

游戏.js

class PaperScissorsRockCommand {
    constructor() {}

    getComputerChoice() {
        const choices = ['paper', 'scissors', 'rock'];
        const chance = Math.floor(Math.random() * 3);
        return choices[chance];
    }
}

module.exports = PaperScissorsRockCommand;

游戏规范.js

const assert = require('chai').assert;
const getComputerChoice = require('../commands/games/paperscissorsrock').getComputerChoice;

describe('Paper, Scissors, Rock', function () {
    it('Return paper', function () {
        let result = getComputerChoice();
        assert.equal(result, 'paper');
    });
});

标签: javascriptmocha.jschai

解决方案


您需要将您的功能标记为静态

class PaperScissorsRockCommand {
    constructor() {}

    static getComputerChoice() {
        const choices = ['paper', 'scissors', 'rock'];
        const chance = Math.floor(Math.random() * 3);
        return choices[chance];
    }
}

如目前所写,您正在将此方法添加到PaperScissorsRockCommand.prototype

还测试一个使用的函数Math.random将很难没有模拟Math.random:)


推荐阅读