exp*_*nit 5 javascript jquery jquery-ui qunit
这对其他人来说可能是显而易见的,但我没有通过搜索找到它,所以在这里发布问题和一个可能的答案.
背景:
从这个例子中删除了实际的小部件:
test( 'show/hide', 1, function() {
var somecondition = true;
var div = $( '<div/>' ).hide();
if (somecondition) div.show();
equal( somecondition, div.is( ":visible" ) );
});
Run Code Online (Sandbox Code Playgroud)
测试失败,因为jQuery总是报告div.is( ":visible" )为false.我认为使用div.css('display') == 'none'将是一种解决方法.不幸的是,这适用于Chrome,但不适用于Firefox.
问题是,jQuery是足够聪明,知道,即使某个特定元素已表示它是可见的,它可能不是真正可见,如果(例如):
因此,为了使单元测试工作,我需要在测试工具html中有一个真正的div,将小部件附加到它,然后在最后调用destroy.
test( 'show/hide', 1, function() {
var somecondition = true;
var div = $( '#someid' ).hide();
if (somecondition) div.show();
equal( somecondition, div.is( ":visible" ) );
});
Run Code Online (Sandbox Code Playgroud)
我希望有一种不同的方法(也许有人会出现并提供另一个答案),但我不是很有希望,因为这是JQueryUI在他们自己的QUnit测试中使用的方法:
test( "search, close", function() {
//SNIP
// Note the use of a real element here:
element = $( "#autocomplete" ).autocomplete({
source: data,
minLength: 0
}),
menu = element.autocomplete( "widget" );
//SNIP
ok( menu.is( ":visible" ), "menu is visible after search" );
//SNIP
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2573 次 |
| 最近记录: |