我需要为某些文本内容设置取反,并尝试下面的代码,但是由于文档中没有说明,我希望它会失败,而且确实可以,所以我想知道如何在其中实现取反这种情况。
await expect(element(by.id('myElemId'))).not.toHaveText('some text')
答案 0 :(得分:1)
不幸的是,我不认为Detox能够使用.not
的{{1}}属性
但是您可以这样:
首先创建一个函数,如果存在特定的文本短语,则该函数返回布尔值。我们使用以下事实:如果不存在该值,则会抛出错误,通过将其包装在expect
中,我们可以返回一个布尔值,然后可以在测试中使用该布尔值。
try/catch
然后,如果以文本形式返回true,则可以按以下方式使用它引发错误。
async function hasText (id, text) {
try {
await expect(element(by.id(id))).toHaveText(text);
return true;
} catch (err) {
return false;
}
}
我知道这不是解决问题的绝妙方法,如果Detox为我们提供了所需的API,那就更好了,但我想可以在紧要关头使用它。
答案 1 :(得分:1)
从 Detox 版本 17.11.4 开始,您可以执行此操作
await expect(element(by.id(options.testID))).toBeNotVisible()
或
await expect(element(by.text(options.text))).toBeNotVisible()
这是使用 Jest 推荐设置的正确方法。