Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Node.js、Express、SinonJS和BusterJS的存根集成测试_Node.js_Express_Sinon_Buster.js - Fatal编程技术网

与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。