我需要帮助来测试我的 Javascript 代码。我有一个称为更新的方法,它会在屏幕上移动我的游戏中的敌人。
constructor(game, x, y, bulletLayer, frame) {
super(game, x, y, 'enemy', frame);
this.bounceTick = Math.random() * 2; }
update() {
this.bounceTick += .02;
this.y += Math.sin(this.bounceTick) * 1;
}
在为它编写测试时,这就是我试图做的。
it("moves position correctly", function() {
this.bounceTick = 2;
enemy.update();
assert.equal(Math.sin(this.bounceTick) *1);
});
这是我得到的错误 - AssertionError: expected NaN to equal undefined.
我将如何为更新代码编写测试以确保我的敌人正确移动?我知道我应该将 bounceTick 设置为固定数字,因为在类里面它被计算为 Math.random() * 2
最佳答案
错误消息的原因是您只将一个参数传递给 assert.equal(Math.sin(this.bounceTick) *1);
该函数需要两个参数——它是assert.equal
,意味着您希望它查看两件事并查看它们是否相等。错误消息中的 undefined
表示缺少第二个参数。消息中的 NaN
表示您对 Math.sin()
的调用返回了一个无法识别为数字的错误值。
此外,如果您将 bounceTick
作为随机值启动,那么您将很难测试代码的这一方面。我写了一个类似的应用程序, Sprite 在屏幕上四处移动。我不像你在这里做的那样用笔试来测试它们;我只是看着它们在屏幕上移动,然后决定它看起来是否正确。
我不知道有什么有效的方法可以像您所做的那样对其进行测试,因为您的 Sprite 将遵循的路径以及它们的起始位置是不可预测的。
关于javascript - 如何测试javascript代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49440483/