节点请求模块在测试期间没有得到响应

时间:2017-02-10 20:08:19

标签: javascript node.js request mocha chai

我是节点新手并使用node.js模块request向Google发送http请求。

然后我使用测试库chai来测试http请求是否成功。测试失败了,我不能为我的生活理解为什么。

代码如下:

//validator.js
var request = require('request')

export function validateWeb(website) {
   request('http://www.google.com', function (error, response, body) {
       if (!error && response.statusCode == 200) {
           console.log("Inside the successful callback!") //not being printed
           return response.statusCode
       }
   })
}

测试如下:

//validator_spec.js
import {validateWeb} from '../src/validator'

describe ('Validator', () => {
    describe ('correctly validates', () => {
         it('existing site', () => {
             const site = "http://www.google.com"
             var result = validateWeb(site)
             expect(result).to.equal(200)
         })
    })
})

我错过了什么?运行npm test时,测试本身已启动并运行(但断言失败)。

1 个答案:

答案 0 :(得分:0)

您的验证器是异步的,因此您需要提供并使用回调(或承诺):

//validator.js
var request = require('request')

export function validateWeb(website, callback) {
   request(website, (error, response, body) => {
       if (error) return callback(error)
       callback(null, response.statusCode)
   })
}

然后在你的测试中:

//validator_spec.js
import {validateWeb} from '../src/validator'

describe ('Validator', () => {
    describe ('correctly validates', () => {
         it('existing site', (done) => {
             const site = "http://www.google.com"
             validateWeb(site, (err, result) => {
                 if (err) return done(err)
                 expect(result).to.equal(200)
             })
         })
    })
})