2012-01-23 61 views
3

我想跟随集成测试railscasts和测试密码重置url。我遇到了NoMethodError的问题,我不确定发生了什么。rspec和未定义的方法模型

我有一个用户模型,有一个forgot_password值,这只是一个将通过电子邮件发送出去的散列。

这似乎是工作

ruby-1.9.2-p290 :001 > u=User.find(1) 
... 
ruby-1.9.2-p290 :002 > u.forgot_password 
=> "1280aceaf23f185a2d09a57b5534e7e3" 

,但我得到了以下错误:

1) PasswordResets emails user when requesting password reset 
    Failure/Error: click_button "jt" 
    NoMethodError: 
    undefined method `forgot_password=' for #<User:0x007ff916b03da0> 
    # /Users/jt/rails-1/app/controllers/users_controller.rb:61:in `forgot_password_confirmation' 
    # (eval):2:in `click_button' 

这里是规格:

需要 'spec_helper'

describe "PasswordResets" do 
    it "emails user when requesting password reset" do 
    user=Factory(:user) 
    visit log_in_path 
    click_link "password" 
    fill_in "email", :with => user.email 
    click_button "jt" 
    end 
end 

什么NoMethodError告诉我?它看起来好像从rails c中,存在forgot_password值。我错过了什么?

THX

+0

确保您运行了rake db:test:prepare如果您在迁移中添加了字段。 –

+0

很确定这是它。谢谢 – timpone

回答

10

只是为了未来的搜索:

当你看到一个无方法错误的东西,如“为AttributeName =” - 但你知道主动记录并称attr_accessor到模型,你应确保您已运行:

rake db:test:prepare 

迁移后。不能说这让我有多少次了!

相关问题