如何在排毒中添加负面断言,例如not.toHaveText?

问题描述 投票:1回答:1

我需要为一些文本内容设置否定并尝试下面的代码,但因为它没有在文档中说明我预期它会失败并且确实如此,所以我想知道在这种情况下我怎么可能实现否定。

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

react-native testing e2e-testing detox
1个回答
1
投票

不幸的是,我认为Detox有能力使用.notexpect属性

但是你可以这样:

首先创建一个函数,如果存在特定的文本短语,则返回布尔值。我们使用的事实是,如果一个值不存在,它会抛出并发生错误,通过将其包装在try/catch中,我们可以返回一个布尔值,然后我们可以在测试中使用它。

async function hasText (id, text) {
  try {
    await expect(element(by.id(id))).toHaveText(text);
    return true;
  } catch (err) {
    return false;
  }
}

然后,如果为了获得文本返回true,则可以按以下方式使用它来抛出错误。

it('should not have some text', async () => {
  await expect(element(by.id('myElemId'))).toBeVisible();
  let result = await hasText('myElemId', 'some text');
  // so if the text exists it will return true, as we don't want it to exist then we can throw our own error.
  if (result) {
    throw new Error('Should not have some text, but did.');
  }
});

我知道这不是一个优雅的问题解决方案,如果Detox给我们提供了我们需要的API会更好,但我想这可以用在紧要关头。

© www.soinside.com 2019 - 2024. All rights reserved.