与Node.js、Express、SinonJS和BusterJS的存根集成测试
在使用实时测试服务器进行集成测试时,我遇到了存根方法问题与Node.js、Express、SinonJS和BusterJS的存根集成测试,node.js,express,sinon,buster.js,Node.js,Express,Sinon,Buster.js,在使用实时测试服务器进行集成测试时,我遇到了存根方法问题 describe("Group - Integration", function() { before(function() { this.timeout = 1000 * 5; this.server = http.createServer(app).listen(app.get('port')); }); after(function() { this.server.close(); }); descri
describe("Group - Integration", function() {
before(function() {
this.timeout = 1000 * 5;
this.server = http.createServer(app).listen(app.get('port'));
});
after(function() {
this.server.close();
});
describe("group/get", function() {
it("returns 200 and an empty body when an invalid response type is used", function(done) {
var deferred = when.defer();
request.get("http://localhost:3000/api/v2/username/key/not-json/group/get", done(function(error, response, body) {
buster.assert.equals(error, null);
buster.assert.equals(response.statusCode, 200);
buster.assert.equals(body, "");
deferred.resolver.resolve();
}));
return deferred.promise;
});
it("returns 401 unauthorized if invalid credentials are provided", function(done) {
var deferred = when.defer();
var response_body = '{ "non_field_errors": [ "Invalid API credentials." ] }';
var stub = sinon.stub(request, 'post').yields(null, {statusCode: 400}, response_body);
request.get("http://localhost:3000/api/v2/username/key/json/group/get", done(function(error, response, body) {
buster.assert.equals(error, null);
buster.assert.equals(response.statusCode, 401);
buster.assert.equals(body, "");
stub.restore();
deferred.resolver.resolve();
}));
return deferred.promise;
});
// itEventually("returns 401 unauthorized if the company has been disabled", function() {
// expect("a").toBe("b");
// });
});
});
我先运行服务器,然后再运行它。但是,当我存根request.post时,它不起作用。我怀疑这是因为我在服务器启动后存根它,但是当我在服务器启动前尝试存根它时,它也不起作用。是否有一种在实时测试服务器上存根方法的好方法?仅供参考,当您返回承诺时,您不需要在测试函数中使用done参数:Buster将检测承诺并执行其余操作。事实上,如果您采取了“完成”并返回承诺,我们可能会返回一个错误。哦,好吧,对于你的实际问题。。你能详细说明一下请求函数是什么吗?为什么要启动一个真正的HTTP服务器,而你却想存根它?另外,您正在删除request.post,但正在调用request.get,这可能是罪魁祸首吗?request.post上的捕捉很好。我把它改成了存根请求。不做任何改变。请求函数为。我正在启动一个实际的HTTP服务器,因为这是一个集成测试。我想确保我的路线有效。我需要存根request.get,以便在请求过程中不会碰到任何外部API。