gpt4 book ai didi

javascript - 开 Jest 收到 : serializes to the same string on Object

转载 作者:行者123 更新时间:2023-12-05 02:08:24 28 4
gpt4 key购买 nike

这里是新手测试,我遇到了这个错误

module.js

import reducer from './reducer';

export default function getGModalModule({ domain }) {
return {
id: `GModal-module-${domain}`,
reducerMap: {
[domain]: reducer({
domain,
}),
},
};
}

module.test.js

import getGModalModule from '../module';
import reducer from '../reducer';

describe('getGModalModule', () => {
it('returns the correct module', () => {
const reducers = reducer({
domain: 'demo'
})

const expectVal = getGModalModule({
domain: 'demo'
});
const received = {
id: `GModal-module-demo`,
reducerMap: {
demo: reducers,
},
}
console.log("expectVal", expectVal)
console.log("received", received)

expect(expectVal).toEqual(received);
});
});

错误是这样的:

Expected: {"id": "GModal-module-demo", "reducerMap": {"demo": [Function gModalReducer]}}
Received: serializes to the same string

我试过注销结果,它们看起来完全一样,知道为什么这没有通过测试吗?

expectVal { id: 'GModal-module-demo', reducerMap: { demo: [Function: gModalReducer] } }
received { id: 'GModal-module-demo', reducerMap: { demo: [Function: gModalReducer] } }

提前致谢

最佳答案

Jest 不能比较函数。即使它们被序列化为相同的字符串,即使它们的源代码相同,函数也可能通过闭包引用不同的变量或绑定(bind)到不同的this,所以我们不能说函数是否相等。

expect(function aaa() {}).toEqual(function aaa() {}); // fails

您可能希望在显式比较之前排除方法或 create custom matcher那会为你做的。但是,如果您改为测试函数的作用,那就更好了。在您的情况下,您可能对 ./reducer.js 进行了单独测试,对吗?您可以同时加入两个测试:一个单独测试 reducer,另一个检查对象键名。

关于javascript - 开 Jest 收到 : serializes to the same string on Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60989232/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com