Как проверить показ элемента после клика?

Я работаю с модульным тестом мокко, и мне нужно проверить, виден ли элемент после щелчка по переключателю. Другими словами, у меня есть две переключатели, которые переключают два элемента с помощью JavaScript, и я хотел бы проверить это.

это мой тест:

it("Checking #completed-task existance", function (done) {
    chai.assert.equal($("#completed-task").length, 1);
    done();
});

it("Checking #completed-task is visible", function (done) {
    $("#master div.onoffswitch").find("input[data-id='completed-task']").click();
    chai.assert.equal($("#completed-task").is(":visible"), true);
});

первый тест проходит, а второй - нет. проблема в том, что $("#completed-task").is(":visible") всегда ложно, на реальной странице это работает просто отлично, какие-либо предложения?

1 ответ

У вас есть анимация на элемент, который отображается / скрывается. Вы должны поставить свое утверждение после тайм-аута. Поскольку вы только проверяете, является ли он "видимым", вам не нужно ждать завершения всей анимации. Я бы начал с 100 мс (или даже 0 мс), а затем посмотреть, если вам нужно больше.

Например:

it("Checking #completed-task is visible", function (done) {
    $("#master div.onoffswitch").find("input[data-id='completed-task']").click();

    // This may be needed to increase the mocha timeout.        
    //this.timeout(100);

    setTimeout(function() {
        chai.assert.equal($("#completed-task").is(":visible"), true);
        done();
    }, 100);
});

Этот ответ содержит более подробную информацию и ссылку на документы: /questions/2840755/kak-uvelichit-vremya-ozhidaniya-dlya-odnogo-testa-v-mokko/2840762#2840762

Другие вопросы по тегам