J'obtiens l'erreur actuelle

Cannot read property 'indexOf' of undefined

    at Function.isPendingSpecException

Je pense que le problème se résume à cette ligne de code

TokenRepositoryMock.findTokenRecordByToken.mockImplementationOnce(
  async () => null,
)

Si je change ce code en ceci, je n'obtiens plus l'erreur.

TokenRepositoryMock.findTokenRecordByToken.mockImplementationOnce(
  async () => ValidToken,
)

J'ai besoin de cette fonction pour renvoyer null afin de pouvoir tester le code défaillant. Voici la méthode que je teste

public static validate(): Middleware {
  return async (ctx: Context, next: Next): Promise<void> => {
    const token = ctx.data.get('token')

    const tokenRecord: AccountToken | null = await TokenRepository.findTokenRecordByToken(
      token,
    )

    if (!tokenRecord) {
      ctx.status = HttpStatus.UNAUTHORIZED
      throw new InvalidTokenError()
    }

    ctx.data.set('token', tokenRecord)

    await next()
  }
}

J'ai vu quelques articles en ligne indiquant qu'il pourrait s'agir d'une erreur avec Intellij IDEA (https://stackoverflow.com/a/54425293/ 9431766) et jest 24.0.0, cependant, j'exécute 26.6.3 et je l'exécute également via PhpStorm et la ligne de commande et j'obtiens toujours la même erreur.

Des suggestions sur la façon de résoudre ce problème?

0
nzmattman 14 févr. 2021 à 01:38

1 réponse

Meilleure réponse

Ok donc j'ai trouvé quelque chose dans mon code qui l'a corrigé.

J'importe TokenRepository depuis un module externe que nous avons.

import { TokenRepository } from '@company/library'

Et puis pour me moquer, je faisais ça

jest.mock('@company/library')

const TokenRepositoryMock = mocked(TokenRepository, true)

En mettant à jour le chemin jest.mock, il a en quelque sorte commencé à fonctionner correctement.

C'est à dire. jest.mock('@company/library/dist/token/TokenRepository')

Bizarrement, cela a recommencé à fonctionner

0
nzmattman 13 févr. 2021 à 22:48