如何在排毒中添加否定断言,如not.toHaveText?

时间:2019-02-28 13:34:18

标签: react-native testing e2e-testing detox

我需要为某些文本内容设置取反,并尝试下面的代码,但是由于文档中没有说明,我希望它会失败,而且确实可以,所以我想知道如何在其中实现取反这种情况。

await expect(element(by.id('myElemId'))).not.toHaveText('some text')

2 个答案:

答案 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 推荐设置的正确方法。