Сбой теста для сопоставления toThrow () - PullRequest
1 голос
/ 30 апреля 2019

Я новичок в модульном тестировании в JS, изучаю jest Framework.У меня проблема с простым toThrow() средством сопоставления, с которым я тестирую свою функцию ошибки броска.

Я написал простую функцию foo(), которая генерирует только ошибку и проверяет ее с помощью toThrow() сопоставителя.

index.js

export const foo = () => {
  throw new Error('bar');
};

index.test.js

import {foo} from './index';

test('foo', () => {
  expect(foo()).toThrow();
});

Насколько я понимаю, поскольку функция выдает ошибку в любом случае, ожидаемый результат, проверенный toThrow(), долженразрешить пройденный тест.Однако, когда я запускаю yarn test, я получаю следующую ошибку:

 FAIL  index.test.js
  ✕ foo (3ms)

  ● foo

    bar

      21 | 
      22 | export const foo = () => {
    > 23 |   throw new Error('bar');
         |         ^
      24 | };
      25 | 

      at foo (index.js:23:9)
      at Object.<anonymous> (index.test.js:13:10)

Test Suites: 1 failed, 1 total

Есть ли какая-то ошибка в моем коде или, возможно, мое понимание toThrow() matcher?

1 Ответ

0 голосов
/ 30 апреля 2019

Вам необходимо передать функцию в expect при использовании toThrow.

В этом случае вы можете просто передать foo:

index.js

export const foo = () => {
  throw new Error('bar');
};

index.test.js

import { foo } from './index';

test('foo', () => {
  expect(foo).toThrow();  // Success!
});

Если бросок зависит от параметра, вы можете передать функцию стрелки, которая вызывает вашу функцию:

index.js

export const foo = bar => {
  if (bar > 0) throw new Error('bar > 0');
};

index.test.js

import { foo } from './index';

test('foo', () => {
  expect(() => foo(0)).not.toThrow();  // Success!
  expect(() => foo(1)).toThrow();  // Success!
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...