Jasmine/量角器:每次测试失败后停止测试
我目前正在编写测试量角器,我想知道是否有可能在beforeach中的某些内容失败时立即取消测试执行(并返回一些有用的消息,如“前置条件失败:无法登录用户”)。 也就是说,我在beforeach中有一些助手方法,可以登录用户,然后进行一些设置Jasmine/量角器:每次测试失败后停止测试,jasmine,protractor,Jasmine,Protractor,我目前正在编写测试量角器,我想知道是否有可能在beforeach中的某些内容失败时立即取消测试执行(并返回一些有用的消息,如“前置条件失败:无法登录用户”)。 也就是说,我在beforeach中有一些助手方法,可以登录用户,然后进行一些设置 beforeEach: 1) login user 2) set some user properties 显然,如果第一步失败,那么执行第二步是没有意义的(实际上,这是非常有害的,因为用户被锁定了,这是不好的)。我试图在第一步中添加一个“expe
beforeEach:
1) login user
2) set some user properties
显然,如果第一步失败,那么执行第二步是没有意义的(实际上,这是非常有害的,因为用户被锁定了,这是不好的)。我试图在第一步中添加一个“expect”,但第二步仍然执行->新鲜出炉。严格回答您的问题,没有外部依赖:
beforeEach(function() {
// 1) login user
expect(1).toBe(1);
// This works on Jasmine 1.3.1
if (this.results_.failedCount > 0) {
// Hack: Quit by filtering upcoming tests
this.env.specFilter = function(spec) {
return false;
};
} else {
// 2) set some user properties
expect(2).toBe(2);
}
});
it('does your thing (always runs, even on prior failure)', function() {
// Below conditional only necessary in this first it() block
if (this.results_.failedCount === 0) {
expect(3).toBe(3);
}
});
it('does more things (does not run on prior failure)', function() {
expect(4).toBe(4);
});
因此,如果1失败,2,3,4,N将无法按预期运行
也有,但我不确定它在每个场景之前会如何运行。jasmine bail fast完全按照您覆盖specFilter函数所做的操作,但在每个场景之后都会执行。因此,只有在运行第一个“it”之后,它才会失败。这无助于解决这个具体案件
jasmine.Env.prototype.bailFast = function() {
var env = this;
env.afterEach(function() {
if (!this.results().passed()) {
env.specFilter = function(spec) {
return false;
};
}
});
};
然后打电话:
jasmine.getEnv().bailFast();
(这要归功于谁编写了一个npm来实现这一点,但是你不需要使用它)使用jasmine2,我们可以将
throwOnExpectationFailure
设置为true
例如,在量角器配置中:
//protractor.conf.js
exports.config = {
//...
onPrepare: () => {
jasmine.getEnv().throwOnExpectationFailure(true);
}
};
每个街区前有两个吗?合并它们并检查第一部分的结果,只有在第一部分完成得很好时才运行第二部分。不,它的两个函数在一个块中调用。另外,主要的问题是:既然我已经知道TC会失败,那么我如何才能完全阻止它运行呢?在Jasmine 2.0中,我找不到chrome Debugger提供的
this.results()
,我的答案是Jasmine 1.x,在Jasmine 2.x出现之前