Создать объект Error с определенными свойствами в модульных тестах - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь реализовать модульный тест для следующего фрагмента моего кода

try {
   return await request.post(options);
} catch (err) {
   if (err.statusCode === 401) {
     log.info('Not authenticated. Refreshing token...');
     const tokenResponse =
              await Janus.refreshToken(graph.username, graph.password, graph.host, graph.port);
     const token = tokenResponse.body.token;
     graph.token = token;
     return gremlinQuery(graph, query);
   }
   log.error(`Gremlin script didn't pass : ${err}`);
 }

Чтобы проверить строки, содержащиеся в части catch, я заглушаю функцию post:

stubPost.callsFake(() => Promise.reject(new Error()));

Как я могу реализовать ошибку со свойством statusCode? Конструктор Error ожидает ввода string. Разве я не могу передать ему объект или что-то в этом роде?

1 Ответ

0 голосов
/ 11 мая 2018

Один из способов сделать это может быть следующим:

MyApiError = function(data) {
  this.code = data.code; 
  this.message = data.message
}
MyApiError.prototype = Error.prototype;

var e = new MyApiError({code: 33, message: 'test'});

e.code; // 33
e.message; // 'test'
...