如何编写Rspec测试用于设计验证方法

时间:2014-12-06 18:21:38

标签: ruby-on-rails rspec

 def self.find_for_database_authentication(warden_conditions)
    conditions = warden_conditions.dup
    if login = conditions.delete(:login)
      where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
    else
      where(conditions).first
    end
  end

以上是验证方法,代码来自Model。

我无法理解如何将warden_conditions作为参数传递给此方法进行测试。

你能帮我解决一下如何将warden_condition作为Rspec(Unit)Testiong的参数传递吗?

谢谢

1 个答案:

答案 0 :(得分:2)

这似乎是一个类方法,warden_conditions似乎只是一个哈希,所以你可以使用这样的东西

let(:email) { "foo@bar.com" }
let(:warden_conditions) { { login: email } }

it "finds user by email" do
  user = User.create(email: email)
  authenticated = User.find_for_database_authentication(opts)
  expect(authenticated).to eql user 
end

it "finds user by username" do
  user = User.create(username: email)
  authenticated = User.find_for_database_authentication(opts)
  expect(authenticated).to eql user 
end