目前我正在使用jQuery 1.6.1和jsTestDriver框架来测试以下代码片段。主要目的是测试“#arew”输入元素是否在焦点事件触发“#switcher”后获得焦点。它没有通过测试,但我认为它没有理由失败。
一个奇怪的事情是,如果我在此测试函数中使用firefox中的firebug设置断点,则稍后按下运行按钮后测试将成功通过。
有没有人遇到同样的问题?或者它是jsTestDriver框架的错误?
我的夹具如下:
<form id="test-form">
<input style="display: none;" type="text" value="" name="area" id="area">
<input type="text" value="" name="switcher" id="switcher">
</form>
这是我的javascript测试代码
TestCase('test focus within a focus event', {
setUp: function() {
this.$form = $('#test-form');
},
'test focus switcher, area should be focused': function() {
function focusHandler(){
$('#area', this.$form).show();
$('#area', this.$form).focus();
}
$('#switcher', this.$form).live('focus', focusHandler);
$('#switcher', this.$form).focus();
assertTrue($('#area', this.$form).is('focus'));
},
});
答案 0 :(得分:0)
除了选择器应该是':focus'而不是'focus'这一事实,我没有任何其他可靠的建议。你不应该经常重新找东西。尝试:
TestCase('test focus within a focus event', {
setUp: function () {
this.$form = $('#test-form');
},
'test focus switcher, area should be focused': function () {
function focusHandler() {
$('#area', this.$form).show().focus();
}
var $switcher = $('#switcher', this.$form);
$switcher.live('focus', focusHandler);
$switcher.focus();
assertTrue($('#area', this.$form).is(':focus'));
}