如何使jest没有区分负零和正零?

时间:2018-01-23 15:21:53

标签: javascript jestjs

让Jest没有通过以下测试的最佳方法是什么:

test('example', () => {
  expect(0).toEqual(-0);
});

我不想区分负零和正零。

也许我应该使用其他功能代替.toEqual?或者我应该替换所有这样的块:

expect(a).toEqual(b);

expect(a === 0 ? +0 : a).toEqual(b === 0 ? +0 : b);

3 个答案:

答案 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。