如何使用此方法的rspec编写测试用例

时间:2017-10-06 12:31:46

标签: ruby-on-rails ruby rspec

我想为下面的方法编写测试用例。我是单元测试的新手。请让我知道为下面的方法编写测试用例的正确方法。

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

1 个答案:

答案 0 :(得分:2)

这可能不是"答案"本身但有些意见/建议可能会帮助您指明正确的方向:

  1. 即使创建新用户,您的方法也会返回哈希值。您应该返回新用户。如果有错误,activerecord对象将出现这些错误,无需添加自己的错误。

  2. 请记住测试行为。这对于第1点的变化至关重要。此方法的行为是:它返回一个用户记录,无论是否保存,都是行为。测试一下。

  3. 您可能不需要调用user.valid?。只需调用user.save

  4. 即可
  5. 您可能只返回user.save本身,因为如果它有效,您将获得持久保存的用户。如果没有,您可以查看user.errors