繁体   English   中英

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

[英]how to write test case using rspec of this method

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

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. 您的方法看起来正在返回哈希,即使它正在创建新用户。 您可能应该返回新用户。 如果存在错误,则activerecord对象将具有这些错误,无需添加您自己的错误。

  2. 记住要测试行为。 这对于点1的更改至关重要。此方法的行为是:它返回用户记录(无论是否保存),即行为。 测试一下。

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

  4. 您可能只返回user.save本身,因为如果可行,您将获得一个持久保存的用户。 如果没有,您可以检查user.errors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM