让Jest没有通过以下测试的最佳方法是什么:
test('example', () => {
expect(0).toEqual(-0);
});
我不想区分负零和正零。
也许我应该使用其他功能代替.toEqual
?或者我应该替换所有这样的块:
expect(a).toEqual(b);
到
expect(a === 0 ? +0 : a).toEqual(b === 0 ? +0 : b);
答案 0 :(得分:2)
您可以通过在expect
函数中执行逻辑来稍微回避该问题:
expect(0).toEqual(-0); // fails
expect(0 === -0).toEqual(true); // ugly, but it works!
答案 1 :(得分:1)
您可以使用.toBeCloseTo(number, numDigits)
匹配器:
expect(-0).toBeCloseTo(0, 10);
答案 2 :(得分:0)
列表和嵌套对象的一种解决方案是将它们转换为JSON并返回。
const negativeObject = { list: [-0, -0] };
const positiveObject = { list: [0, 0] };
expect(JSON.parse(JSON.stringify(negativeObject)))
.toEqual(positiveObject);
之所以有效,是因为JSON.stringify()
将-0转换为0。