Testing anonymous function equality with Jest
47,810
In such situation, without rewriting your logic to use named functions, you don't really have another choice other than declaring the function before the test, e.g.
const foo = i => j => i * j
const foo2 = foo(2)
const bar = () => ({ baz: foo2, boz: 1 })
describe('Test anonymous function equality', () => {
it('+++ bar', () => {
const obj = bar()
expect(obj).toEqual({ baz: foo2, boz: 1 })
});
});
Alternatively, you can check whether obj.bar
is any function, using expect.any(Function)
:
expect(obj).toEqual({ baz: expect.any(Function), boz: 1 })
which might actually make more sense depending on the context of the test.
Comments
-
strider almost 2 years
Is there a way to test anonymous function equality with
jest@20
?I am trying to pass a test similar to:
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}) }); });
which currently yields:
● >>>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.
-
teberl about 6 yearsthx for the answer, your alternative way is enough for my tests!
expect(result).toEqual({ getFooData: expect.any(Function), foo: 'some foo string' })