对于 BDD 和 RSpec 来说相当新,我真的很好奇人们在编写 RSpec 测试/示例时通常会做什么,特别是因为它涉及同一事物的正面和负面测试。
以验证用户名和有效用户名仅包含字母数字字符的规则为例。
肯定/肯定测试将是这样的:
it "should be valid if it contains alphanumeric characters"
username = 'abc123'
username.should be_valid
end
虽然阴性测试是这样的:
it "should be invalid if it contains non-alphanumeric characters"
username = '%as.12-'
username.should_not be_valid
end
你会写一个测试,而不是另一个?两个都写好吗?你会把它们放在同一个测试中吗?我已经看到人们执行上述任何操作的示例,所以我想知道是否有最佳实践,如果有,它是什么?
写正负测试的例子:
it "should be invalid if it contains non-alphanumeric characters"
username = '%as.12-'
username.should_not be_valid
username = 'abc123'
username.should be_valid
end
我见过有人这样做的例子,但老实说,我不喜欢这种方法。我倾向于以单一目的保持事物干净和独特,就像我们应该如何编写方法一样,所以我更有可能编写两个单独的测试而不是将它们放在一个中。那么有没有说明这种情况的最佳实践呢?这些示例应该从一个角度而不是所有角度测试单个特征/行为。