断言总是返回err(预期'a'等于深等于'a')

时间:2018-10-18 15:19:24

标签: typescript automated-tests assert e2e-testing testcafe

我在这里做了一个简单的测试,但是我看到很多ppl都遇到了这个问题,但是不幸的是,我无法找到解决方案,因此,我在征求您的意见。 现在,我在链接中有这个字符串对象:

...
<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 €'

我确实试图找到解决方案,但是要么我要更改constlet的定义,然后尝试应用其他方法,所有方法最终都会出错,并出现不同的错误消息。 那么,在上述情况下,我该如何解决呢? 谢谢!

编辑:感谢您的提示!我编辑了该帖子,是因为我意识到我没有提到我已经尝试了您的建议...

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, ''));

err

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

我这里的想法不多了:)

2 个答案:

答案 0 :(得分:4)

此问题与nonbreaking space有关。

以下断言在您的情况下应该可以正常工作:

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

答案 1 :(得分:1)

特定测试用例的问题在于,&nbsp;未被Testcafe解释为常规空格。

起作用的是,如果您从收到的错误消息中复制12,45 €,然后将其粘贴到代码中作为期望值就可以了。