Existe-t-il un moyen de tester l'égalité de fonction anonyme avec jest@20
?
J'essaie de passer un test similaire à:
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})
});
});
qui donne actuellement:
● >>>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.
Dans une telle situation, sans réécrire votre logique pour utiliser des fonctions nommées, vous n'avez pas vraiment d'autre choix que déclarer la fonction avant le test, par ex.
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 })
});
});
Alternativement, vous pouvez vérifier si obj.bar
Est une fonction , en utilisant expect.any(Function)
:
expect(obj).toEqual({ baz: expect.any(Function), boz: 1 })
ce qui pourrait en fait avoir plus de sens selon le contexte du test.