对于由“ .1”关闭的数字执行断言的最佳方法是什么?在testcafe

时间:2020-03-24 00:12:18

标签: javascript testing testcafe browser-automation end-to-end

我需要一些帮助。这很奇怪。我基本上正在编写一些testcafe测试,其中: 用户将转到订单摘要页面,并验证结帐页面上的总数与订单详细信息页面上的总数是否匹配。

问题: 在某些情况下,订单明细总计不足一美分(根据开发人员的说法,这不是一个值得尽快修复的错误)。例如,在结帐页面上,您的订单总额为3.50美元。在订单详细信息页面上,总计为$ 3.51

在testcafe断言中是否有办法与一分钱作斗争?

这是我的断言:

await t
        .expect(totalOnCheckoutPage)
        .eql(totalOnOrderDetails);

totalOnCheckoutPage和totalOnOrderDetails是选择器变量。

2 个答案:

答案 0 :(得分:3)

您可以编写自定义util进行四舍五入。样本

function round(x, precision) {
    var y = +x + (precision === undefined ? 0.5 : precision/2);
    return y - (y % (precision === undefined ? 1 : +precision));
}
console.log(round(3.51, 0.1))
console.log(round(3.55, 0.1))

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round

答案 1 :(得分:1)

您可以尝试使用内部断言方法

await t.expect(5).within(3, 10, 'this assertion will pass');

提取两个值的内部文本,并添加所需的舍入范围

https://devexpress.github.io/testcafe/documentation/test-api/assertions/assertion-api.html#within