Как проверить, пропускает ли оболочка в вызовах Jest и правильно ли она? - PullRequest
0 голосов
/ 20 мая 2019

Это дополнительный вопрос к этому вопросу .

У меня есть функция с именем assertTruthy для Jest. assertTruthy(msg, fn, args), ожидает сообщение, функцию и аргументы и должен пройти, если вещь, возвращаемая при вызове функции с аргументами, является верной и завершится ошибкой, если ее нет.

Я хочу расширить его, чтобы также поддерживать Jest's only и skip.

Вот что я написал:

assertTruthy.skip = ({
  message = '',
  fn = undefined,
  args,
} = {}) => {
  it.skip(message, () => {
    expect(fn(args)).toBeTruthy();
  });
};

assertTruthy.only = ({
  message = '',
  fn = undefined,
  args,
} = {}) => {
  it.only(message, () => {
    expect(fn(args)).toBeTruthy();
  });
};

Как бы я протестировал эти функции?

Вот то, что я попробовал, и это работает, но я не уверен, что это правильно.

describe('skip()', () => {
  test('it skips the function', () => {
    it.skip = jest.fn();
    assertTruthy.skip({
      message: 'something',
      fn: () => true,
      args: undefined,
    });
    expect(it.skip).toHaveBeenCalledTimes(1);
  });
});

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Это выглядит достаточно честно, что ваши assertTruthy skip и only вызывают методы Jest it skip и only.

Возможно, вы захотите заявить, что он также вызывает их с аргументами, которые вы ожидаете использовать toHaveBeenCalledWith.

0 голосов
/ 20 мая 2019

Не могли бы вы рассказать подробнее о том, чего вы хотите достичь, и я не понял правильно, почему вы хотите расширить шутник и использовать только методы для достижения того же, что вы уже тестировали.

Ноесли вы хотите только проверить, была ли функция не вызвана / не выполнена с toHaveBeenCalledTimes() на основе аргументов «истина / ложь», то вы делаете это правильно.

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