所以我需要在运行测试之前根据promise返回的特定条件运行Jasmine测试。由于似乎没有办法用Promises动态排除描述,我正在检查promise结果,然后运行一些expect或者只调用done()。这不是理想的,因为仅使用done()
进行测试会导致"SPEC HAS NO EXPECTATIONS"
,但如果我在测试不应该运行的情况下使用pending()
那么测试就会失败,因为没有在超时内被调用done()
。
我当前的实现是(此函数从具有特定testing_case
的描述中调用):
function checkOptions(testing_case) {
for (var key in cases_expectations[testing_case]) {
(function (case, expectation) {
it(case + " should be " + expectation, function (done){
this.is.a.function.then(function(result) {
var current_case = result.case;
if (current_case !== testing_case) {
done();
} else {
this.is.another.function(current).then(function(result) {
expect(result).toBe(expected);
done();
}, function(error) {
expect().toBeDefined();
done();
});
}
}, function(error) {
expect().toBeDefined();
done();
});
})
})(key, cases_expectations[testing_case][key]);
}
}
两个问题:
我如何才能将pending()
与done()
合并?
有没有办法在承诺中运行描述?