在 mocha 集成测试期间不执行请求
Request is not executed during mocha integration test
在交换 API 之前,我想通过集成测试来保护客户端(使用 API),以确保新的 API 提供与 API 相同的结果旧的和客户仍然按预期工作。因此,我为各自的客户端方法编写了几个集成测试。这些客户端方法使用 request 来查询 API.
然后我使用 mocha 来执行测试。在测试中,现在似乎根本没有执行请求。
我做了一个简单的例子来说明我的问题:
var request = require('request');
var assert = require('chai').assert;
describe('test', function(){
it('request-test', function(done){
var responseBody;
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
responseBody = body;
}
});
done();
assert.notEqual(responseBody, undefined);
});
});
在这个例子中,console.log 永远不会执行,并且测试总是在断言中失败。
尝试将断言和 done() 调用放在回调中。
done()
的位置存在问题。 done()
用于测试异步代码。
在回调中使用它来正确执行测试用例。
var request = require('request');
var assert = require('chai').assert;
describe('test', function(){
it('request-test', function(done){
var responseBody;
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
responseBody = body;
assert.notEqual(responseBody, undefined);
done();
}
});
});
});
在交换 API 之前,我想通过集成测试来保护客户端(使用 API),以确保新的 API 提供与 API 相同的结果旧的和客户仍然按预期工作。因此,我为各自的客户端方法编写了几个集成测试。这些客户端方法使用 request 来查询 API.
然后我使用 mocha 来执行测试。在测试中,现在似乎根本没有执行请求。
我做了一个简单的例子来说明我的问题:
var request = require('request');
var assert = require('chai').assert;
describe('test', function(){
it('request-test', function(done){
var responseBody;
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
responseBody = body;
}
});
done();
assert.notEqual(responseBody, undefined);
});
});
在这个例子中,console.log 永远不会执行,并且测试总是在断言中失败。
尝试将断言和 done() 调用放在回调中。
done()
的位置存在问题。 done()
用于测试异步代码。
在回调中使用它来正确执行测试用例。
var request = require('request');
var assert = require('chai').assert;
describe('test', function(){
it('request-test', function(done){
var responseBody;
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
responseBody = body;
assert.notEqual(responseBody, undefined);
done();
}
});
});
});