在单元测试中创建具有特定属性的Error对象

时间:2018-05-11 13:10:12

标签: javascript unit-testing typescript error-handling try-catch

我正在尝试为下面的代码实现单元测试

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 :(得分:0)

执行此操作的一种方法可以如下所示

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'