我有以下两个函数,我正在编写一些Jasmine测试:
var showSpinner = function () {
$('#spinner').remove();
$('<div id="spinner"><i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i></div>')
.appendTo('body')
.hide()
.fadeIn();
};
var hideSpinner = function () {
$('#spinner').fadeOut(function () {
$(this).remove();
});
};
我的测试如下:
it('show spinner', function () {
showSpinner();
expect($('#spinner').length).toEqual(1);
});
it('hide spinner', function () {
hideSpinner();
expect($('#spinner').length).toEqual(0);
});
第一次测试工作正常。但是由于fadeOut
hideSpinner
导致第二次测试失败。
我试图修改它以使用超时,例如
it('hide spinner', function () {
hideSpinner();
setTimeout(function () {
expect($('#spinner').length).toEqual(0);
}, 100);
});
但这导致测试通过,但警告没有期望......
我该如何测试?
答案 0 :(得分:1)
您应该阅读Jasmine's Asynchronous Support:
it('hide spinner', function(done) {
hideSpinner();
setTimeout(function() {
expect($('#spinner').length).toEqual(0);
done();
}, 400);
});
400
ms是$.fadeOut
的默认超时。