Duc*_*ong 4 javascript module jestjs
新手在这里测试,我遇到了这个错误
模块.js
import reducer from './reducer';
export default function getGModalModule({ domain }) {
return {
id: `GModal-module-${domain}`,
reducerMap: {
[domain]: reducer({
domain,
}),
},
};
}
Run Code Online (Sandbox Code Playgroud)
模块.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);
});
});
Run Code Online (Sandbox Code Playgroud)
该错误是这样的:
Expected: {"id": "GModal-module-demo", "reducerMap": {"demo": [Function gModalReducer]}}
Received: serializes to the same string
Run Code Online (Sandbox Code Playgroud)
我尝试注销结果,它们看起来完全一样,知道为什么这没有通过测试吗?
expectVal { id: 'GModal-module-demo', reducerMap: { demo: [Function: gModalReducer] } }
received { id: 'GModal-module-demo', reducerMap: { demo: [Function: gModalReducer] } }
Run Code Online (Sandbox Code Playgroud)
提前致谢,
Jest 无法比较函数。即使它们被序列化为同一个字符串,即使它们的源代码相同,函数也可能通过闭包引用不同的变量或绑定到不同的变量,this因此我们不能说函数是否相等。
expect(function aaa() {}).toEqual(function aaa() {}); // fails
Run Code Online (Sandbox Code Playgroud)
您可能希望在显式比较之前排除方法,或者创建自定义匹配器来为您执行此操作。但如果你测试一下函数的作用会更好。在你的情况下,你可能有单独的测试./reducer.js,对吧?您可以加入两项测试:一项是单独测试减速器,另一项是检查对象键名称。
| 归档时间: |
|
| 查看次数: |
13504 次 |
| 最近记录: |