节点请求模块在测试期间没有得到响应
Node request module not getting response during testing
我是节点的新手,使用 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
(但断言失败)时,测试本身已启动并 运行ning。
您的验证器是异步的,因此您需要提供和使用回调(或 Promise):
//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)
})
})
})
})
我是节点的新手,使用 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
(但断言失败)时,测试本身已启动并 运行ning。
您的验证器是异步的,因此您需要提供和使用回调(或 Promise):
//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)
})
})
})
})