К сожалению, я не думаю, что Detox имеет возможность использовать .not
свойство expect
Однако вы можете сделать что-то вроде этого:
Сначала создайте функцию, которая возвращаетлогическое значение, если существует конкретная текстовая фраза.Мы используем тот факт, что если значение не существует, оно выдаст ошибку и, обернув его в 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, но я полагаю, что это можно было бы использовать в крайнем случае.