无法使用suave服务器运行多个karma测试

时间:2016-07-19 13:02:49

标签: karma-runner webix suave

当我单独运行以下测试时(通过注释),然后每个测试都通过。但是,当我运行所有测试时,我得到一个XmlHttpRequest未捕获的异常。 suave测试服务器接收请求,日志记录显示没有错误或问题:

var HOME_URL = "http://localhost:3000/request";

it("should echo the test request with response", function (done) {
    var test = { act: 'test1', qry: {} };

    var promise = webix.ajax().post(HOME_URL, JSON.stringify(test));

    console.log('test1');
    promise.then(function (resp) {
        expect(resp.json().succ).to.be(true);
        done();
    }).fail(function (err) {
        done();
        throw(err);
    });

});


it("should echo the test request with response 2", function (done) {
    var test = { act: 'test2', qry: {} };

    var promise = webix.ajax().post(HOME_URL, JSON.stringify(test));

    console.log('test2');
    promise.then(function (resp) {
        expect(resp.json().succ).to.be(true);
        done();
    }).fail(function (err) {
        console.log('echo test error', app.util.inspect(promise));
        done();
        throw(err);
    });

});

任何想法可能是什么问题或如何调试这些测试?

自己运行代码(必须安装git node和npm):

git clone http://github.com/halcwb/GenUnitApp.git cd GenUnitApp git checkout failingServer scripts/run.sh

打开第二个终端

./build.sh clienttests

投票时请说明,然后我可以改进我的问题。

1 个答案:

答案 0 :(得分:0)

对于遇到此问题的任何人,您可以将ajax调用嵌套在before函数中,然后在测试中使用promises(webix.ajax返回一个promise),如:

var HOME_URL = "http://localhost:3000/request";
var test1, test2;

before(function () {
    var req = { act: 'test1', qry: {}};

    test1 = webix.ajax().post(HOME_URL, JSON.stringify(req));
    req.act = "test2";
    test2 = webix.ajax().post(HOME_URL, JSON.stringify(req));
});

it("should echo the test request with response", function (done) {
    var promise = test1;

    promise.then(function (resp) {
        expect(resp.json().succ).to.be(true);
        done();
    }).fail(function (err) {
        done();
        throw(err);
    });

});


it("should echo the test request with response 2", function (done) {
    var promise = test2;

    promise.then(function (resp) {
        expect(resp.json().succ).to.be(true);
        done();
    }).fail(function (err) {
        done();
        throw(err);
    });

});

请在投票时解释,我尝试学习。