Невозможно запустить несколько тестов кармы с помощью учтивого сервера

Когда я запускаю приведенные ниже тесты по отдельности (комментируя), каждый тест проходит. Однако, когда я запускаю все тесты, я получаю необработанное исключение XmlHttpRequest. Обходительный тестовый сервер получает запросы, и журнал не показывает ошибок или проблем:

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

Если вы проголосуете против, пожалуйста, объясните, тогда я смогу улучшить свой вопрос.


person halcwb    schedule 19.07.2016    source источник


Ответы (1)


Для тех, кто сталкивается с этим, вы можете вложить вызовы ajax в функцию before, а затем использовать обещания (webix.ajax возвращает обещание) в своих тестах, например:

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);
    });

});

Пожалуйста, объясните, когда голосование против, я пытаюсь учиться.

person halcwb    schedule 19.07.2016