我正在使用此功能来检查UI中是否显示了某些隐私策略。如果显示了x策略,则单击“我同意”按钮转到下一页以检查是否显示了y策略。如果未显示,则标记错误。重复此过程,直到检查了所有策略。
我们有4个隐私政策,我们可以打开或关闭这些政策。因此,有时仅显示2或3条策略,而不是4条。如果仅显示2或3条策略就可以了,并且不应破坏测试。因此所有的if s。有什么我可以使用的,而不是很多?我觉得在一个方法下有很多ifs。
public static void CheckPolicy(bool privacyPolicy1Expected = true, bool privacyPolicy2Expected = true, bool privacyPolicy3Expected = true, bool privacyPolicy4Expected = true)
{
if (privacyPolicy1Expected) { PP1AgreementValidation(); }
if (!privacyPolicy1Expected) { App.AssertElementNotPresent(_privacyPolicy1Header); }
if (privacyPolicy2Expected) { PP2AgreementValidation(); }
if (!privacyPolicy2Expected) { App.AssertElementNotPresent(_privacyPolicy2Header); }
if (privacyPolicy3Expected) { PP3AgreementValidation(); }
if (!privacyPolicy3Expected) { App.AssertElementNotPresent(_privacyPolicy3Header); }
if (privacyPolicy4Expected) { PP4AgreementValidation(); }
if (!privacyPolicy4Expected) { App.AssertElementNotPresent(_privacyPolicy4Header); }
}
我没有错误。该代码工作正常。我只需要将其缩短一点或使用其他函数来缩短代码。
答案 0 :(得分:1)
您正在检查条件是否为真,然后再次检查它是否为真。您可以将其重写为if else
。
if (privacyPolicy1Expected) { PP1AgreementValidation(); }
if (!privacyPolicy1Expected) { App.AssertElementNotPresent(_privacyPolicy1Header); }
成为:
if (privacyPolicy1Expected)
{
PP1AgreementValidation();
}
else
{
App.AssertElementNotPresent(_privacyPolicy1Header);
}
答案 1 :(得分:0)
如果您想真正缩短它,我建议使用三元运算符
const api = {
baseURL: 'https://localhost:3000',
users: {
userPath: '/api/.../',
registerPath: '/api/.../register/',
},
bills: {
billsPath: '/api/.../bills/',
},
transactions: {
registerPath: '/api/.../transactions/',
},
};
module.exports = api;
它像紧凑的If / Else语句一样工作。它测试“?”之前的条件。如果为true,则在“:”之前执行代码;如果测试为false,则将在“:”之后执行代码。