[英]Protractor/Jasmine Conditional Test Cases
与此问题相关: 如何使用Protractor创建条件测试用例? - 我很好奇这些场景是否有合法(记录)的答案,因为我无法得到一个直接的答案。
虽然链接问题中发布的ignore
解决方案有效,但从风格上来说,我并不喜欢它。 乍一看,它看起来像是在忽略/跳过规范。
另外,我在Gitter问了这个问题 - 下面的代码是不好的做法?
if(questionAnswer == "Yes") {
it('should display another question', function() {
// code
});
}
我从量角器团队的人那里收到的Gitter答案相当含糊:
这可能导致片状测试......我认为没有任何东西可以说它不是不好的做法。 如果它适合你,那么运行它。
我对这个答案并不满意,因为他开始说“可能是片状的......”这对我来说听起来并不稳定。 我看到的唯一选择是在规范中创建条件正常,并创建一个任意断言来捕获else
场景,即:
it('should display another question', function() {
if(questionAnswer == "Yes") {
expect(question2.isDisplayed()).toBe(true);
}
else {
expect(true).toBe(true);
}
});
但是当我只需要50%的时间时,我会自动添加一个额外的测试用例。 我知道这是一个小问题,但它确实困扰我。
上面的代码是我目前面临的情况 - 如果最后一个规范回答“是”,我需要为下一个问题运行一个额外的规范。 如果没有,那就是我测试的结束。 是否真的没有正式的方法来有条件地运行Jasmine / Protractor中的规范?
在这些情况下,我使用所谓的上下文 。 通常,上下文用于表示影响您正在测试的代码行为的状态更改。
虽然在Jasmine中没有明确提供,但它们确实存在于其他BDD风格的测试框架中,如Rspec( 相关参考 )。 通常, context
只是describe
的别名。
所以在Jasmine中,我将使用describe
和我的测试结构如下:
describe('someMethod', function() {
describe('when a privileged account', function() {
beforeEach(function() {
questionAnswer = "Yes";
someMethod();
});
it('should do something', function() {
// expectation
}
});
describe('when not a privileged account', function() {
beforeEach(function() {
questionAnswer = "No";
someMethod();
});
it('should do something else', function() {
// expectation
}
});
);
我避免“条件测试”。 我宁愿运行更多的测试来确保我已经耗尽了所有的代码路径。 此外,我发现测试更具可读性,这是BDD风格测试的目标之一。
最后,为测试添加逻辑是人们走上测试测试的荒谬道路的一个原因。 然后测试测试测试的测试。 然后...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.