【发布时间】:2012-05-16 21:15:17
【问题描述】:
我正在运行 Rails 3.2.1 和 rails-rspec 2.8.1....当我运行重置用户密码的测试时,似乎重新加载用户对象不会加载新密码属性... .
这是我的测试代码:
describe "Reset password page" do
let(:teacher) { FactoryGirl.create(:teacher, :email=>"jane@gmail.com")}
let(:old_password) { teacher.password }
before do
visit reset_password_form_path
fill_in "Email", with: teacher.email
click_button "Reset Password"
end
it { should have_content('Your new password has been emailed to the address you provided.')}
specify { Teacher.find_by_email("jane@gmail.com").password.should_not == old_password }
## specify { teacher.reload.password.should_not == old_password } ##THIS FAILS
end
指定 { teacher.reload.password.should_not == old_password } 失败,但 指定 { Teacher.find_by_email("jane@gmail.com").password.should_not == old_password } 通过
所以这告诉我密码被正确保存,但没有被重新加载......任何想法为什么?我正在使用 Rails 3.2.x“has_secure_password”方法来滚动登录/密码功能。这意味着密码摘要是保存到数据库中的内容,密码是虚拟属性(我认为)。
【问题讨论】:
-
我在
reload中遇到了同样的问题,在should中不起作用:stackoverflow.com/questions/10504505/… -
在您的示例中,重新加载效果很好,您应该只使用 should_not
-
@Samy Dindane,我对您在10504505 的回答感到困惑,因为我的指定{teacher.reload...} 行不等同于 sn-p.reload.title.should == “再见”??
-
对不起,伙计。当我发布第一个评论时,我有点困惑。请不要介意。 :)
-
@apneadiving,对不起,有一个错字 - “should_not” .reload 行失败,这就是我如此困惑的原因;我已经更正了原帖中的错字
标签: ruby-on-rails rspec2