我的jasmine2 /量角器测试看起来像这样
var testUserId = null;
describe("user test", function() {
beforeAll(function(done) {
createTestUser().
.then(function(userId){testUserId = userId})
.then(done)
.catch(done.fail);
it("should do stuff with the test user", function(done) {
// bla bla
});
afterAll(function(done) {
deleteTestUser(testUserId).
.then(done)
.catch(done.fail);
});
})
createTestUser和deleteTestUser返回promises。如果出现问题,他们会拒绝并显示错误消息。可能现在问题是,即使在beforeAll中发生错误,测试也会开始。我得到了
Failures:
1) should do stuff with the test user
Message: [my error message from beforeAll]
如果有很多测试,它会尝试执行所有这些测试,但会出现非常sam错误消息。如果beforeAll函数失败,是否可以阻止它执行测试?
THX!
(“jasmine-core”:“2.8.0”,“量角器”:“5.2.1”)
编辑:
这不是我要求的,但至少我找到了一个解决方案来保持错误消息的数量如下:
var testUserId = null;
describe("user test", function() {
beforeAll(function(done) {
createTestUser().
.then(function(userId){testUserId = userId})
.then(done)
.catch(done.fail("test user could not be created"));
it("should do stuff with the test user", function(done) {
if (testUserId) {
// bla bla
} else {
done();
});
这样我至少得到了正确的错误信息(“无法创建测试用户”)而不是“// bla bla”中未满足的期望(自然我仍然得到一个它,但无论如何)。我还将函数包装在函数工厂中,这样我就不必每次都编写if条件。
答案 0 :(得分:4)
据我所知,jasmine
does not support that尽管受到关注:
在规范运行中跳过(本期)更多一点 复杂,因为根据错误的类型,Jasmine可能 仍然需要运行任何afterEach(或者依赖于all依赖)来清理 陈述下一个规范。这将需要QueueRunner 知道它给出的哪些功能是设置和拆卸而不是 只需要一个要调用的函数列表。
一种选择是使用“快速失败”选项,可以使用其中一个第三方库来完成,例如jasmine-fail-fast
或protractor-jasmine2-fail-whale
。
除了手动检查it()
函数中是否存在先前的失败之外,还有其他一些解决方法: