我有以下功能:
function prompt_mandatory_field_completion(){
$("#mandatory_fail").show(150, function() {
setTimeout(function() {
$("#mandatory_fail").fadeOut(500)
}, 2000);
});
window.scrollTo(0,0)
}
我想用茉莉花进行测试,但无论我在规范文件中添加什么,测试似乎都会通过。
spec文件包含以下代码:
it(' NEED TO FIX THAT FADE OUT Should prompt user to fill in mandatory questions via prompt_mandatory_field_completion function', function() {
prompt_mandatory_field_completion();
setTimeout(2000, function(){
expect($('#mandatory_fail').css('display').toEqual('random thing'));
});
在我的SpecRunner.html中,我使用了以下在此描述块中的每个测试之前运行的函数:
function setupFixtures(){
setFixtures('<div id="mandatory_fail" style="display:none;"></div>');
prompt_mandatory_field_completion();
};
知道如何将其变成有意义的测试吗?我想我一直盯着它看太长时间并从所有方向戳它。
最佳,
亚当
答案 0 :(得分:0)
您正在尝试编写异步行为的功能测试。您可能有更好的经验尝试使用量角器进行此类测试。它更倾向于断言最终成真的事情。
然而,jasmine确实有一个异步工具,因为大约2.0,称为done()
,它将坚持所有异步代码在测试通过或失败之前运行。
答案 1 :(得分:0)
您必须传递done
函数才能获得异步测试:
it(' NEED TO FIX THAT FADE OUT Should prompt user to fill in mandatory questions via prompt_mandatory_field_completion function', function(done) {
prompt_mandatory_field_completion();
setTimeout(2000, function(){
expect($('#mandatory_fail').css('display').toEqual('random thing'));
done();
});
}, 3000);
您还可以将超时作为最后一个参数传递,具体取决于您在茉莉花设置中设置的内容。
否则,如果执行超过超时,Jasmine会认为此测试失败。