ValidateUsername только для чтения |TS с Jest / Фермент - PullRequest
0 голосов
/ 10 июня 2019

У меня есть небольшая служебная функция, которую я тестирую с Jest и Enzyme в моем проекте React-TS. В файле JS в этом проекте я получаю следующую ошибку:

"validateUsername" is read-only.

Это сама утилита:

export const validateUsername = value =>
  listUsers()
    .then(({ data }) => {
      if (Array.isArray(data) && data.find(userData => userData.username === value)) {
        throw 'Username already exists';
      }
    })
    .catch(error => {
      throw serverErrorResponseUtil(error);
    });

А вот и тест для него:

describe('Validate Username', () => {
  const validateUsernameFn = jest.fn();
  beforeEach(() => {
    validateUsername = validateUsernameFn;
  });

  it('Should throw an error if the given value exists', async () => {
    try {
      await validateUsername('username');
    } catch (e) {
      expect(e).toEqual('Username already exists');
    }
  });

  it('Accept the data if the passed userName is unique', async () => {
    expect(() => validateUsername('Username is unique')).not.toThrow();
  });
});

Я получаю ошибку здесь: validateUsername = validateUsernameFn;. Дело в том, что этот файл JS. Почему я получаю сообщение об ошибке только для чтения. Можете ли вы, ребята, помочь мне здесь?

1 Ответ

0 голосов
/ 11 июня 2019

Похоже, вы экспортируете свою функцию как export const validateUsername, а затем пытаетесь переназначить ее в строке, которая выдает ошибку.constant s не могут быть переназначены (по замыслу), только let и var.

Это не совсем понятно, но, похоже, вам не нужно использовать jest.fn здесь - это для создания фиктивных «шпионских» функций, чтобы вы могли, например, проверить, была ли вызвана функция с правильными аргументами.Вы пытаетесь протестировать саму функцию, поэтому нет необходимости переназначать ее шпиону.

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