Утверждение всегда возвращает ошибку (ожидается, что «а» будет глубоко равно «а»)

Я делаю здесь простой тест, но я видел много людей, сталкивавшихся с этой проблемой, но, к сожалению, я не смог найти решение, поэтому я прошу вашего мнения. Теперь у меня есть этот строковый объект внутри ссылки:

...
<div class="price">12,45&nbsp;€</div>
...

Я создал этот небольшой тест, чтобы проверить строковое значение:

import { t, Selector } from 'testcafe';
fixture `OfferPage`.page `https://www.verivox.de/applications/broadband/#/offer?i=eyJmaWx0ZXIiOltudWxsLDE2MDAwLDEsbnVsbCwiMDIyMSIsMSwxLDEsbnVsbCwxLDEsbnVsbCwtMSxudWxsLG51bGwsInByaWNlLWFzYyIsMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNl0sImRpYWxvZyI6W251bGxdLCJvZmZlckNyaXRlcmlhIjpbIjYxMzQ0NyIsIjE4MjkyIixudWxsLCIyNCIsMywyLCI1MDAwMCIsIjEwMDAwIixudWxsLG51bGwsMSxudWxsLG51bGwsbnVsbCwiMiIsMSxudWxsLCIwMjIxIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMSw2LG51bGwsbnVsbCxudWxsXX0%3D`;
test('1', async () => {
    const string = Selector('div.price');
    await t.expect(string.innerText).eql('12,45 €');
});

Ошибка, которую я получаю в терминале, такова:

AssertionError: expected '12,45 €' to deeply equal '12,45 €'

Я действительно пытался найти решение, но либо я меняю определение с const на let и пытаюсь применить другие методы, все заканчивается ошибкой с ошибкой с разными сообщениями об ошибках. Итак, как я могу разобраться в приведенном выше случае? Спасибо!

EDIT: Спасибо за подсказки! Я отредактировал пост, потому что понял, что не упомянул, что уже пробовал то, что вы предложили...

let price = Selector('div').withAttribute('class', 'price');
const result = price.parent('div.centered-content effective-price-wrapper');
console.log(result);
await t.expect(result.innerText).eql('12,45 €');

ошибка:

Cannot obtain information about the node because the specified selector does not match any node in the DOM tree.

еще одна попытка:

const string = await Selector('div.price')();
let pret = await Selector(string).innerText;
const rgx = /&nbsp;/gi;
await t.expect(pret.replace(rgx, '')).eql('12,45 €'.replace(rgx, ''));

ошибаться

 AssertionError: expected '12,45 €' to deeply equal '12,45 €'

У меня заканчиваются идеи здесь :)


person Eugen    schedule 18.10.2018    source источник
comment
Неразрывный пробел (&nbsp;) — это не то же самое, что обычный пробел.   -  person Andreas    schedule 18.10.2018
comment
Спасибо, я отредактировал сообщение, потому что я также лечил этот случай, но безуспешно.   -  person Eugen    schedule 19.10.2018


Ответы (2)


Эта проблема связана с неразрывным пробелом.

Следующее утверждение eql должно работать правильно в вашем сценарии:

await t.expect(string.innerText).eql('12,45\xa0€');
person Artem    schedule 19.10.2018

Проблема с вашим конкретным тестовым случаем заключается в том, что &nbsp; не интерпретируется Testcafe как обычное пространство.

Что сработает, так это если вы скопируете 12,45 € из полученного сообщения об ошибке, вставите его в код как ожидаемое значение и все.

person fjc    schedule 18.10.2018
comment
«как-то», потому что это не одно и то же. - person slim; 18.10.2018
comment
Спасибо, я отредактировал сообщение, потому что я также лечил этот случай, но безуспешно. - person Eugen; 19.10.2018