是否有机会有条件地运行链式方法?
我想把这个表达式简化为一行,但找不到在expect上阻塞.not.
的解决方案。
const checkSomething = (element, value = true) => {
if (value) {
expect(element).toBeVisible()
} else {
expect(element).not.toBeVisible()
}
}
您可以使用立即调用的箭头函数来创建一个单行表达式:
const checkSomething = (element, value = true) => {
(e => value ? e : e.not)(expect(element)).toBeVisible()
}
这与基本相同
const checkSomething = (element, value = true) => {
const e = expect(element);
(value ? e : e.not).toBeVisible()
}
这不是一个可选的链接,但如果您将构造定义为
const expectMaybe = (arg, val) => val ? expect(arg) : expect(arg).not;
那么也许你可以把你的oneliner写成
const checkSomething = (element, value=true) => expectMaybe(element, value).toBeVisible();
您可以使用三元运算符。
const checkSomething = (element, value = true) => value ? expect(element).toBeVisible() : expect(element).not.toBeVisible()