【问题标题】:rspec and undefined method on model模型上的 rspec 和未定义方法
【发布时间】:2012-01-23 02:24:55
【问题描述】:

我正在尝试关注集成测试上的 railscasts 并正在测试密码重置 URL。我遇到了 NoMethodError 问题,不确定发生了什么。

我有一个用户模型,它有一个 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 值。我错过了什么?

谢谢

【问题讨论】:

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

标签: ruby-on-rails ruby-on-rails-3 rspec


【解决方案1】:

仅供未来的搜索者使用:

当您看到诸如“attributename=”之类的无方法错误时——但您知道 active-record 正在将该 attr_accessor 添加到模型中,您应该确保您已经运行:

rake db:test:prepare

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多