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);
我正在尝试设置 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);