我正在尝试在我们的 Ruby on Rails 系统中测试一个案例,在该案例中,我们在 x 次登录尝试失败后将用户锁定在外。我遇到的问题是尝试创建用户已达到“锁定”他的帐户的数量。我正在使用工厂来创建这样的用户-
Factory.define :locked_user, :class => User do |user|
user.name "Test Lock"
user.email "lock@lock.com"
user.password "blah1234"
user.password_confirmation "blah1234"
user.login_count 5
end
其中 5 是“幻数”。当我尝试使用类似的东西时
@user = Factory(:locked_user)
它在数据库中创建一个用户——但新创建的用户总是将 login_count 设置为零,所以它只是将他记录在测试中。当我像这样尝试 .build 方法时
@user = Factory.build(:locked_user)
它像我想要的那样设置了 login_count = 5 的用户,但随后不认为该用户有效并且不会尝试登录(即,它给了我们“错误的用户/密码”错误而不是“正确的用户” /password 但你被锁定了'错误)。我想我在这里遗漏了一些东西来让 RSpec 了解这是一个有效用户但该帐户应该被锁定的事实。有人可以帮我纠正一下吗?下面是整个desribe块-
describe "with locked account" do
before(:each) do
@user = Factory.build(:locked_user)
@attr = { :email => @user.email, :password => @user.password}
end
it "should not allow signin with locked account" do
post :create, :session => @attr
flash.now[:error].should =~ /Invalid user locked out/i
end
end