javascript - Node 回调参数无法断言instanceof错误

标签 javascript node.js mocha.js

我正在为 oauth 制作一些简单的函数,其中之一验证在中是否存在 scoperedirectUriclientId它的选项哈希。此外,如果这些不存在,那么它应该返回callback(new Error(...)):

function(opts, callback) {
  var scope = opts.scope;
  var clientId = opts.clientId;
  var redirectUri = opts.redirectUri;

  if (!scope) {
    return callback(new Error('No scope provided'));
  }

  ...
}

在我的测试中,我通过断言如果没有提供范围,它应该返回 Error 类型的内容来测试这一点,并且错误应该与该描述匹配:

it('should require a scope', function() {
  var callback = sinon.spy();
  myOauthFunction({}, callback);

  callback.args[0].should.be.an.Error;
  callback.args[0].toString().should.eql('Error: No scope provided');
});

但是,当我运行测试时,出现此错误:

断言错误:预期 [[错误:未提供范围]] 是一个错误。第二个断言不会导致问题,这意味着参数具有 toString 属性,但不是 Error 类型。我有点困惑 - 为什么它不能断言这是一个错误

最佳答案

正如您在输出消息中看到的那样,args[0] 实际上是一个数组。 args[0] 指第一次调用的参数,args[1] 指第二次调用的参数,依此类推。

如果你想检查第一次调用的第一个参数,你必须这样做

callback.args[0][0].should.be.an.Error;

callback.getCall(0).args[0].should.be.an.Error;

更多信息请参见 documentation .

关于javascript - Node 回调参数无法断言instanceof错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29234256/

相关文章:

javascript - mongoose.connect(),第一个参数应该是字符串,收到未定义

node.js - 使用 serverless-mocha-plugin 测试动态端点

javascript - 当表格包含不同的 colSpan 和 rowSpan 时,html 表格固定行和列

javascript - Discord.js Ping 命令

javascript - 无法在 bootstrap div 上插入 d3 图表

node.js - nodejs - writeFile 创建空文件

javascript - 如何在 DynamoDB 表中插入多个项目并在超出最大容量时等待?

javascript - 如何在Mongodb中使用条件语句进行排序

angularjs - 使用 sinon、mocha、chai 进行 Angular 测试

javascript - AngularJS 在这种情况下有什么简短的方法来调用父作用域吗?