繁体   English   中英

如何在jasmine中将两个对象与浮点值进行比较?

[英]How to compare two objects with float values in jasmine?

我需要在Jasmine中做一些期待,比如:

let realValue = callSomeMethod();
let expected = [{
    total: 33,
    saved: 1.65
}];
expect(realValue).toEqual(expected);

但它失败了,消息是:

Expect [ Object({ total: 33, saved: 1.6500000000000001 })] 
to equal [Object({ total: 33, saved: 1.65 })].

我怎样才能做正确的检查?

toBeCloseTo匹配器用于精确数学比较:

expect(1.6500000000000001).toBeCloseTo(1.65, 2);
expect(1.6500000000000001).toBeCloseTo(1.65, 15);
expect(1.6500000000000001).not.toBeCloseTo(1.65, 16);

来源: 茉莉花匹配

在某些情况下,某些属性是浮动,而有些属性则不是:

let realValue = callSomeMethod();
let expectedFloat = {
    saved: 1.65,
    otherFloat: 6.44
}
let expectedOther = {
    firstName: 'Paul',
    total: 33,
};
let expected = {
    ...expectedFloat,
    ...expectedOther
}

let floatNames = Object.getOwnPropertyNames(expectedFloat);
const testFloatProperty = (name) => () => { 
    expect(realValue[name]).toBeCloseTo(expectedFloat[name], 3)
}

for (let i in floatNames) {
    it('should be close to expected ' + floatNames[i], testFloatProperty(floatNames[i]));
}

it('should contain other expected props', function() {
    expect(realValue).toEqual(jasmine.objectContaining(expectedOther))
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM