我正在为 Rails 中的一个简单用户模型编写单元测试,并且刚刚开始思考如何编写测试。
似乎有积极的测试:
test "password should match the password_confirmation " do
user = User.new(
:email => "email@mail.com",
:password => "password",
:password_confirmation => "password")
assert user.valid?, "did not save user even though password matches confimation"
end
和负面测试:
test "password should not be valid with mismatching password_confirmation " do
user = User.new(
:email => "email@mail.com",
:password => "password",
:password_confirmation => "doesnotmatch")
assert user.invalid?, "saved user with mismatching password_confirmation"
end
将这两个测试都包含在您的测试套件中是多余的还是一种好的做法?
最佳答案
看看TDD. When you can move on? ,这说明您何时准备好测试(和代码)并可以继续前进。在您的示例中,这意味着:
- 你先写正面测试。测试失败。
- 然后编写必要的代码以使测试成功。
在那之后,您需要另一个测试来证明您的实现还不够。当你写了例如
class User def initialize(hash) @hash = hash end def valid? true end end
你需要另一个测试用例来证明这是错误的。
- 编写下一个测试用例,表明检查密码可能会失败。
我看到了以下情况:
- 没有密码
- 匹配密码(但太短)
- 匹配密码(够长够难)
- 密码不匹配
因此您需要 4 个测试用例。
关于ruby-on-rails - 我应该测试正面和负面的陈述吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107677/