javascript - 怎么修; “if-else”语句跳过“if”部分,直接进入“else if”部分?
问题描述
我需要使用 5 个不同的角色登录并检查他们是否有正确的选项卡来根据他们的角色进行导航。
但问题是;它以“司机”角色登录并检查“rides.title”和“chauffeurs.title”。由于“司机”角色不包括“chauffeurs.title”,因此测试失败。
它跳过“if”部分并直接进入“else if”部分。
我尝试了什么:
我试图测试我的循环是否运行良好,显然它运行良好。
我删除了整个 if 块并粘贴了下面的代码,看到它一个一个地登录了每个角色并检查了“rides.title”。
.visit('/planned')
.get('[data-qa="rides.title"')
.should('exist')
.get('[data-qa="logout"]')
.click()
除了最后一个角色;因为它没有“rides.title”,这很好。
这是完整的代码,用于查看并获取有关我到目前为止所做的更多信息:
const roles = ["driver", "dispatcher", "provider", "reviewer", "admin"];
it("Navigation items for a single permission", () => {
cy.fixture("users.json").then(users => {
const user = users[Cypress.env("ENVIRONMENT")];
roles.forEach(role => {
cy.login(user[role], Cypress.env("DEFAULT_USER_PASSWORD")).then(
response => {
cy.setCookie("__bl_pp__", response.body.result.access_token);
if (user[role] === "driver") {
cy.visit("/planned")
.get('[data-qa="rides.title"')
.should("exist")
.get('[data-qa="logout"]')
.click();
} else if (["dispatcher", "provider", "reviewer"].includes(user[role])) {
cy.visit("/planned")
.get('[data-qa="rides.title"')
.should("exist")
.get('[data-qa="chauffeurs.title"')
.should("exist")
.get('[data-qa="logout"]')
.click();
} else {
cy.visit("/planned")
.get('[data-qa="chauffeurs.title"')
.should("exist")
.get('[data-qa="logout"]')
.click();
}
})
})
})
})
})
预期的情况应该是;测试应该使用 5 个不同的角色登录并验证可用的选项卡,如上面的代码中所述。
Role Navigation Tabs
Driver Rides
Dispatcher Rides, Chauffeurs
Provider Rides, Chauffeurs
Reviewer Rides, Chauffeurs
Admin Chauffeurs
提前致谢!
这是我的 users.json 文件:
{
"development":
{
"driver": "aa+driver@b.com",
"dispatcher": "bb+dispatcher@b.com",
"provider": "cc+provider@b.com",
"reviewer": "dd+reviewer@b.com",
"admin": "ee+admin@b.com"
}
}
解决方案
感谢您的意见!我已经通过定义另一个常量来存储我从另一个页面获得的用户实际角色的值来解决这个问题,然后我将其用作条件。
推荐阅读
- r - sparklyr:无法打开本地连接 | 没有权限
- excel - 如何增加 Datatable vb.net 中的行大小
- mysql - 使用 where 条件显示表格
- java - Android - 仅在 oppo 设备中获取 InflateException
- python - 为什么while循环比for循环花费更长的时间?
- javascript - 如何在传单地图上显示热图
- android - PrintManager.print() 并更改了 attachBaseContext 中的语言环境
- java - 尝试检索从 Google 登录下载的位图时出现 Skia 错误
- ios - 为什么 UITableViewCell 的 cellForRowAt 方法没有调用?
- javascript - NodeJs 基于 CSV 输入创建动态 mySql 表