AssertionError [ERR_ASSERTION]: кажется, что локальное хранилище не было инициализировано или находится в контексте - Jest - PullRequest
0 голосов
/ 03 марта 2020

Я пытался создать тест на методе моего контроллера, и когда я пытался вызвать исключение клиента, которое я создал для использования, когда приложение не находит пользователя, я получил эту ошибку: AssertionError [ERR_ASSERTION] : Кажется, что локальное хранилище не было инициализировано или находится в контексте, пожалуйста, убедитесь, что вы используете промежуточное ПО для локального хранилища.

Редактировать: Я пытался смоделировать локальное хранилище, но я получил ту же ошибку.

Тест:

import { cpfValidator } from '../src/v1/helpers/validators';
import { ResourceNotFoundException } from "../src/v1/exception/error-exception";

describe('Testar as rotas', () => {
    it('Informar todos os produtios relacionados a um usuário', async () => {
      const resposta = cpfValidator('CPF38751468831', '')
      expect(resposta).toThrow(TypeError);
    }, 120000);
  });

Валидатор cpf

export async function cpfValidator(userId: string, xTokenInfo?: string): Promise<string> {
  if (userId !== 'me' && new RegExp(/^CPF[0-9]{11}$/).test(userId) && cpf.isValid(userId))
    return userId.substr(3);
  else if (userId === 'me' && new RegExp(/^sub:CPF[0-9]{11}$/).test(xTokenInfo) && cpf.isValid(xTokenInfo.substr(4)))
    return xTokenInfo.substr(7);
  else {
    const logger = new Logger();

    logger.error('Erro ao validar documento. Número de CPF Inválido.', { "user-id": userId });

    throw new ResourceNotFoundException();
  }
}

Класс ошибки:

export class ResourceNotFoundException extends GenericException {
    constructor() {
// consider ERRORS as a constant
        super(ERRORS[404].CODE, ERRORS[404].MESSAGE, ERRORS[404].HTTP_CODE);
    }
}

Класс расширенный

import { HttpException } from '@nestjs/common';
export declare class GenericException extends HttpException {
    constructor(code?: string, message?: string, statusCode?: number);
}

PS: Это был мой первый вопрос, и я новичок в Jest, извините за мои ошибки.

1 Ответ

0 голосов
/ 03 марта 2020

Вы должны смоделировать localStorage перед запуском тестов, вы можете сделать это следующим образом:

//browserMocks.js
var localStorageMock = (function() {
    var store = {};

    return {
        getItem: function(key) {
            return store[key] || null;
        },
        setItem: function(key, value) {
            store[key] = value.toString();
        },
        clear: function() {
            store = {};
        }
    };

})();

Object.defineProperty(window, 'localStorage', {
    value: localStorageMock
});

И в конфигурации jest: "setupFiles":["browserMocks.js"]

Как найдено, https://github.com/facebook/jest/issues/2098

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...