Тестирование функции класса в JavaScript, Mocha и Chai - PullRequest
0 голосов
/ 12 декабря 2018

Я создал простого бота и хочу протестировать базовую функцию класса под названием getComputerChoice.Я использую mocha и chai для проверки этой функции, но когда я ее запускаю, она говорит TypeError: getComputerChoice is not a function.Я пытался найти решение, но мне не повезло.

Вот код ниже:

game.js

class PaperScissorsRockCommand {
    constructor() {}

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

module.exports = PaperScissorsRockCommand;

game.spec.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');
    });
});

1 Ответ

0 голосов
/ 12 декабря 2018

Вам нужно пометить вашу функцию как статическую

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:)

...