【问题标题】:Callback not called by request in chai tests在 chai 测试中未按请求调用回调
【发布时间】:2015-03-06 23:18:24
【问题描述】:

请求的回调似乎没有被调用,因此测试通过了。我认为这可能与异步调用有关,但我不确定如何解决此问题。

var expect = require('chai').expect                                              
var request = require('request'); 

describe('Test http', function(){                                                                             

it('get', function(){                                                        
  request('http://www.google.com', function (error, response, body) {                                       
    throw new Error("test get")                                                                             
  })                                                                                                        
})                                                                                                          

}) 

【问题讨论】:

标签: javascript testing request chai


【解决方案1】:

您忘记将 done-Callback 添加到测试中:

var expect = require('chai').expect                                              
var request = require('request'); 

describe('Test http', function(){                                                                             

    it('get', function(done){                                                        
      request('http://www.google.com', function (error, response, body) {                                       
        throw new Error("test get")
        done();                                                                             
      })                                                                                                        
    })                                                                                                          
}) 

编辑:如果没有回调,node/mocha 将在解析结果之前假定测试已经完成并停止。

另外,我可以推荐使用 supertest,而不是直接使用 request: https://www.npmjs.com/package/supertest

【讨论】:

  • 这将不起作用,因为请求是异步的,并且函数返回的速度可能比触发回调的速度更快,从而完成测试
  • 嗨,Andrey,请求是异步的,这是正确的,但是因为我确实为 mocha 测试提供了一个完成功能,并且只在请求的回调中调用它,并且也不返回请求对象本身(例如 supertest 返回符合标准的承诺),测试按预期工作。
  • 你是对的,我不知道 mocha 测试完成后的这种异步行为
猜你喜欢
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
相关资源
最近更新 更多