我正在使用 react 创建一个大富翁(用骰子玩的棋盘游戏(。我已经为游戏制作了滚动系统。现在我想测试一下。
我的游戏中有两个按钮
-
滚动按钮:
- 其最初启用
- 当用户单击它时,骰子被滚动。玩家动作片段
- 现在有两种情况
- 如果双打被掷出,则玩家可以再掷一轮,并且此按钮保持启用状态
- 如果未滚动双打,则禁用,另一个将启用。
-
结束转动按钮:
- 最初是禁用的。
- 如果骰子被滚动并且双打没有滚动,那么这个将启用。
- 当我们单击此转弯时会发生变化,对于新转弯,这将被禁用,滚动按钮再次启用。
现在我正在使用柏树来测试这一点。我已经编写了测试,它工作正常,但只有 1 次。当我使用循环多次运行测试时,它失败了
describe("Rolling System", function () {
//The required test
it("disables button correctly", function () {
//Visits the page
cy.visit("localhost:3000").then(() => {
//A variable which tell if doubles were rolled at last roll or not
let isRollDisabled = false;
for (let i = 0; i < 10; i++) {
//If roll is over then end the turn
if (isRollDisabled) {
cy.get(".btn-end-turn").click();
}
//If roll button is enabled then click it.
else {
console.log(isRollDisabled);
//Get and click button
cy.get(".btn-roll")
.click()
.then((x) => {
//Get the dice elements
cy.get(".dice").then((dices) => {
//Get the rolls of both die
let roll1 = dices[0].children.length;
let roll2 = dices[1].children.length;
//If not doubles
if (roll1 !== roll2) {
cy.get(".btn-roll").should("be.disabled");
console.log("roll disabled changed");
isRollDisabled = true;
}
//If doubles are rolled
else {
cy.get(".btn-roll").should("not.be.disabled");
isRollDisabled = false;
}
});
});
}
}
});
});
});
请注意上面代码中的两个日志console.log(isRollDisabled);
和console.log("roll disabled changed");
在日志中,我看到false
被记录了10
次,然后记录了"roll disabled change"
。
我想我已经编写了代码,使一个测试一个接一个地运行,但我无法修复它。
从测试主体内部移除循环,改用 cypress-repeat(从命令行(。