gpt4 book ai didi

ruby-on-rails-3 - 编写 RSpec 测试/示例的最佳实践是什么?编写示例来测试正面/肯定、负面或两者?

转载 作者:行者123 更新时间:2023-12-01 11:56:10 25 4
gpt4 key购买 nike

对 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

我见过有人这样做的例子,但老实说我不喜欢这种方法。我倾向于为了一个单一的目的而保持事物的清晰和独特,就像我们应该如何编写方法一样,所以我更有可能编写两个单独的测试,而不是将它们放在一起。那么是否有最佳实践来说明这种情况?这些示例应该从一个角度而不是所有角度测试单个功能/行为。

最佳答案

在那种特殊情况下,我会为正面和负面写下它们。这是因为您真的想确保允许拥有有效用户名的人使用这些用户名,而试图使用无效用户名的人不能这样做。

同样,如果一个应该/不应该有效的用户名与它应该是相反的用户名通过这种方式,您将已经进行了这些测试,这只是将失败的测试添加到正确类别中的简单问题您的测试,确认测试确实失败,修复它,然后确认测试通过。

所以是的,在这种情况下对两者都进行测试。不仅仅是其中之一。

关于ruby-on-rails-3 - 编写 RSpec 测试/示例的最佳实践是什么?编写示例来测试正面/肯定、负面或两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7021220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com