【问题标题】:Superagent 'request' object is being redefined as function?超级代理“请求”对象被重新定义为函数?
【发布时间】:2015-01-19 03:04:44
【问题描述】:

我正在尝试构建一个基于 supertest 的集成测试套件(由 Mocha 运行),它可以 ping 我们的 REST API 并验证响应。

但是,我的测试似乎没有按预期运行:

var assert = require('assert')
var should = require('should')
var request = require('superagent')

var WEBSERVICE_BASE = 'localhost:8080/our-application/'

describe('Authentication', function() {
  it('prevents user from logging in without credentials', function() {
    console.log('###')
    console.log('Starting with: ' + request)
    console.log('###')
    request.get(WEBSERVICE_BASE + 'auth', function(err, res) {
      console.log('Error: ' + err)
      if (err) {
        throw err
      }
      res.should.have.status(401)
      done()
    })
  })
})

我在控制台中看到的:

Craigs-MBP:mocha-tests Craig$ ./run.sh


  Authentication
###
Starting with: function request(method, url) {
  // callback
  if ('function' == typeof url) {
    return new Request('GET', method).end(url);
  }

  // url first
  if (1 == arguments.length) {
    return new Request('GET', method);
  }

  return new Request(method, url);
}
###
    ✓ prevents user from logging in without credentials

    1 passing (12ms)

似乎request 被重新定义为一个函数,而不是superagent 对象?

测试应该通过,至少应该看到打印err参数的console.log

【问题讨论】:

    标签: javascript mocha.js assert superagent should.js


    【解决方案1】:

    请记住,javascript 是异步的。 Superagent 在调用回调之前终止测试,除非您将“done”参数放入 it 方法中,如下所示:

    it('prevents user from logging in without credentials', function(done) {...
    

    测试完成执行,mocha 在回调被调用之前终止。

    【讨论】:

    • 就是这样!谢谢。好像很吓人,没有报错,而且测试通过了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多