我想为下面的方法编写测试用例。我是单元测试的新手。请让我知道为下面的方法编写测试用例的正确方法。
def create_new_user
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(self.password, password_salt)
user = User.new(email: self.email, username:self.username, password_hash: password_hash, password_salt: password_salt)
if user.valid?
user.save ? {is_created: true, err:''} : {is_created: false, err:'Something went wrong,please try later...'}
else
{is_created: false, err: 'Please enter all mandetory fields..'}
end
end
答案 0 :(得分:2)
这可能不是"答案"本身但有些意见/建议可能会帮助您指明正确的方向:
即使创建新用户,您的方法也会返回哈希值。您应该返回新用户。如果有错误,activerecord对象将出现这些错误,无需添加自己的错误。
请记住测试行为。这对于第1点的变化至关重要。此方法的行为是:它返回一个用户记录,无论是否保存,都是行为。测试一下。
您可能不需要调用user.valid?。只需调用user.save
您可能只返回user.save本身,因为如果它有效,您将获得持久保存的用户。如果没有,您可以查看user.errors