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的参数传递吗?
谢谢
答案 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