невозможно понять ошибку при обработке ошибки Boom в Jest ожидаемо - PullRequest
0 голосов
/ 28 февраля 2019

Ниже приведен код Jest для тестирования служебной функции (isAuthorized) для кода узла (конечная точка HapiJs):

**Auth.js:**

 export const isAuthorized = (request, h) => 
 throw Boom.unauthorized('unauthorized') 



**aut.test.js:**
import { isAuthorized } from './Auth';
test('it should return unauthorized', async () => {
  const request = { };


  expect(await isAuthorized(request)).toThrowError(/unauthorized/);
})

При выполнении этого теста.Он выдает ошибку и отслеживает точки в месте, где функция на самом деле выдает Boom.unauthorized('some error') в .unauthorized.Трассировка вообще не помогает, по крайней мере, не для меня ...

Вопрос в том, как лучше всего протестировать функцию, которая выдает ошибки Boom в ожидании Jest.

Зависимостивключают в себя:

"hapi": "^18.1.0", 
"jest": "^24.1.0", 
"babel-jest": "^24.1.0",
"regenerator-runtime": "^0.13.1",
"@babel/cli": "^7.2.3",  
"@babel/core": "^7.2.2",
"@babel/plugin-transform-runtime": "^7.2.0",

1 Ответ

0 голосов
/ 28 февраля 2019

Согласно Документам Jest вы можете использовать toThrow с классом в качестве аргумента, который проверит, является ли выданная ошибка экземпляром этого класса.Таким образом, вы можете (проверено соответственно this ):

const Boom = require('boom');
...
// mind `.rejects`
const rejected = expect(isAuthorized(request, h)).rejects;
rejected.toThrow(Boom);
rejected.toThrow('unauthorized');
...