J'essaye ceci:
expect(AP.require).toBeCalledWith('messages', () => {})
où AP.require est une fonction simulée qui devrait recevoir une chaîne et une fonction en tant que second argument.
Le test échoue avec le message:
Expected mock function to have been called with:
[Function anonymous] as argument 2, but it was called with [Function anonymous]
Pour affirmer une fonction quelconque, vous pouvez utiliser expect.any(constructor)
:
Donc, avec votre exemple, cela ressemblerait à ceci:
expect(AP.require).toBeCalledWith('messages', expect.any(Function))
Le problème est qu'une fonction est un objet et que comparer des objets en JavaScript échouera s'ils ne sont pas la même instance.
() => 'test' !== () => 'test'
Pour résoudre ce problème, vous pouvez utiliser mock.calls
pour vérifier les paramètres séparément.
const call = AP.require.mock.calls[0] // will give you the first call to the mock
expect(call[0]).toBe('message')
expect(typeof call[1]).toBe('function')
Vous pouvez utiliser expect.any (constructeur)
ou si vous ne souhaitez pas spécifier le constructeur, vous pouvez également utiliser
attend.anything ()