4
有没有办法用[email protected]
来测试匿名函数的相等性?使用Jest测试匿名函数的相等性
我试图通过类似的测试:
const foo = i => j => {return i*j}
const bar =() => {baz:foo(2), boz:1}
describe('Test anonymous function equality',()=>{
it('+++ foo',() => {
const obj = foo(2)
expect(obj).toBe(foo(2))
});
it('+++ bar',() => {
const obj = bar()
expect(obj).toEqual({baz:foo(2), boz:1})
});
});
目前产生:
● >>>Test anonymous function equality › +++ foo
expect(received).toBe(expected)
Expected value to be (using ===):
[Function anonymous]
Received:
[Function anonymous]
Difference:
Compared values have no visual difference.
● >>>Test anonymous function equality › +++ bar
expect(received).toBe(expected)
Expected value to be (using ===):
{baz: [Function anonymous], boz:1}
Received:
{baz: [Function anonymous], boz:1}
Difference:
Compared values have no visual difference.
这是一个黑客而不是答案。你可以尝试expect(''+ obj).toEqual(''+ foo(2))'。它比较函数字符串的内容而不是函数本身。 – Malice
@Malice这并不坏,尽管第二个测试更接近我的用例,我将anon fn分配给了我想要比较的对象中的一个属性。你的方法可以作为'.toEqual'中内置的方法来检查这种类型的相等性 – bitstrider
...但不幸的是,相等性不是完全准确的,因为'''+ foo(1)===''+ foo (2)“评估为真” – bitstrider