Qunit 用户行为测试

Qunit user actions testing

我正在尝试设置 Qunit 来测试这样的用户操作:

QUnit.test( "Ran user search", function( assert ) {

            assert.greaterThan($('#user-list .list li').length, 0, 'Number of results returned');

            //setup user settings tests
            var testUser = $('#user-list .list li').first();
            testUser.find('.show-hide-more').trigger('click');

            var testSettingsPanel = testUser.find('.show-more').first();
            assert.equal(testSettingsPanel.css('display'), 'block', 'Settings panel should be openable');
        });

最终断言失败,因为显示样式仍然是none,而不是块。单击事件应该将其从 none 更改为阻止,当我 运行 在控制台中一步步执行时,这就是发生的情况,所以我猜这里发生了竞争条件。有人看到我需要更改什么吗?

编辑

在触发器之后添加:

console.log(testSettingsPanel.css('display'));

给我 'none',所以看起来肯定存在竞争条件或其他事情。我该如何克服这个问题?

解决了问题。结果我以为是简单的切换点击实际上是一个 ajax 调用,我不认识它,因为我还不熟悉这个库。

这很好用:

var done = assert.async();
            setTimeout(function() {
                assert.equal(testSettingsPanel.css('display'), 'block', 'Settings panel should be openable');

                done();
            }, 1000);