我正在做一个熟悉的kata,Bowling Game Kata的Typescript实现。以下是我的游戏课程:
class Game {
private scoreField: number;
constructor() {
this.scoreField = 0;
}
public roll(pins : number) : void {
this.scoreField += pins;
}
public score(): number {
return this.scoreField;
}
}
编译很好,但是当我测试“得分():”
test("AllOnes", function () {
for (var i: number; i < 20; i++) {
g.roll(1);
}
equal(g.score(), 20);
});
..对于20个1针的卷,我希望得分()返回20,但它返回0.看来scoreField变量没有被成功分配。谷歌搜索和搜索约40分钟后,我没有看到任何明显的...
答案 0 :(得分:1)
谷歌搜索并搜索约40分钟后,我没有看到任何明显的事情......
根据您的代码,2件事情需要运作:
需要执行构造函数...这不会显示在您发布的代码中
this
可能是错的。如果你做var g = new Game()
(构造函数调用),那么this
就可以了,所以可能不是原因。 (更多关于this
https://www.youtube.com/watch?v=tvocUcbCupA)。
答案 1 :(得分:1)
问题实际上在于你的测试,你有这个:
test("AllOnes", function () {
for (var i: number; i < 20; i++) {
g.roll(1);
}
equal(g.score(), 20);
});
但i的价值永远不会被初始化,所以试试吧......
test("AllOnes", function () {
for (var i: number = 0; i < 20; i++) { // <-- note the = 0
g.roll(1);
}
equal(g.score(), 20);
});