在试图弄清楚如何使某些茉莉花期望语句依赖于先前的期望声明时,我发现在Jasmine 2.3.0之前,没有办法。 (参见Stop jasmine test after first expect fails)但是,Jasmine 2.3.0添加了一个选项stopSpecOnExpectationFailure
,当设置为true时,将停止对第一次失败的测试。
对此前景感到兴奋,我修改了我的conf.js以包含选项:
/*
* conf.js
*/
exports.config = {
framework: 'jasmine',
specs: ['search-spec.js'],
useAllAngular2AppRoots: true,
jasmineNodeOpts: {
stopSpecOnExpectationFailure: true
}
};
但这对我不起作用。
在我的测试中,我有:
/**
* Test option from select element is selected
*/
function verifyOptionSelected(option) {
var myEl = $('select[value="' + option + '"]';
expect(myEl.isPresent()).toBe(true, 'Option, ' + option + ', is not a value in the dropdown list. (It might be the text.)');
expect(myEl.isSelected()).toBe(true, 'Option, ' + option + ', is not selected as expected.');
}
在上面的代码中,将尝试两个expect语句,但如果第一个语句失败,我不需要尝试第二个语句。
有没有人用茉莉花来解决这个问题?
(是的,我知道jasmine-bail-fast和protractor-fail-fast。但是,在我看来,使用内置功能是一种更好的解决方案。)
答案 0 :(得分:4)
我在protractor
和jasmine-npm
(protractor
使用的茉莉花选手)源代码中看到的内容并不像添加stopSpecOnExpectationFailure
或{ {1}}配置的jasmine node选项。必须对stopOnFailure
应用更改以支持新的protractor
茉莉花节点选项。请在Protractor
issue tracker中创建问题/功能请求。
我还试图调用stopSpecOnExpectationFailure
函数,在throwOnExpectationFailure
中设置stopSpecOnExpectationFailure
值抛出jasmine.getEnv()
,但这些都没有效果。也许,我错过了一些东西,有一种方法可以启用设置。