javascript - 在 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');
});
});
解决方案
您需要将您的功能标记为静态
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
:)
推荐阅读
- flutter - Flutter 如何使用 in_app_purchase 插件实现订阅?
- compare - 比较每个版本的 node_modules
- cuda - 为什么使用大于每个多处理器内核数的线程块
- python-3.x - 在 Nvidia RTX2080 Ti 上使用 Tensorflow2.0 的“简单”ResNet50 的 OOM
- salesforce - 如何将选择列表发送到 VisualForce 中的另一个页面
- java - 签署launch4j生成的exe会破坏它
- excel - 返回特定值的行
- python - 用户无法更新个人资料信息
- java - 如何在 youtube 中找到 flash 对象 ID?
- jsoup - 使用 jsoup 按类名获取所有元素