ruby-on-rails - RSpec 的未定义方法 `its'(Hartl 的 Ruby on Rails 教程)

标签 ruby-on-rails ruby rspec

我在 Michael Hartl 的 RoR 教程第 8 章中遇到了问题。测试失败,因为 RSpec 的“它的”方法是“未定义的”。你遇到过类似的事情吗?可能是什么原因?我已经检查了一切,与书中的一样......

这是我来自 user_spec.rb 的测试代码:

describe User do

 before { @user = User.new(name: "Example User", email: "user@example.com",
                password: "foobar", password_confirmation: "foobar") }

 subject { @user }

 describe "remember token" do
 before { @user.save }
 its(:remember_token) { should_not be_blank }
end
...
...

运行测试的结果,它说:RSpec::ExampleGroups::User::RememberToken:Class (NoMethodError) 的未定义方法 `its':

MBP:sample_app smi$ bundle exec rspec spec
/Users/smi/projects/sample_app/spec/models/user_spec.rb:12:in `block (2 levels) in <top (required)>': **undefined method `its' for RSpec::ExampleGroups::User::RememberToken:Class (NoMethodError)**
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec'
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `subclass'
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method'
from /Users/smi/projects/sample_app/spec/models/user_spec.rb:10:in `block in <top (required)>'
from /Users/smi/.rvm/gems/ruby-2.0.0-p594/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec'
from /Users/smi/.rvm/g.................

最佳答案

你把下面的写成:

its(:remember_token) { should_not be_blank }

作为

expect(subject.remember_token).not_to be_blank

阅读its isn't core to RSpecArguments passed to its讨论。由于您使用的是 Rspec >= 3.0,因此出现了错误。因为在此版本或更高版本中,its 不是 Rspec 核心的一部分。

您可以查看 Rspec 的当前 One-liner syntax .

关于ruby-on-rails - RSpec 的未定义方法 `its'(Hartl 的 Ruby on Rails 教程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014000/

相关文章:

ruby-on-rails - Rails 测试 validates_associated 模型规范

ruby-on-rails - RSpec: stub 辅助参数不起作用

ruby-on-rails - Rails PaperClip 拖放多个文件

ruby-on-rails - 使用RVM安装Ruby 1.9.2时出现Curl证书错误

ruby-on-rails - Ruby on Rails - 捆绑安装期间出错

Ruby 日期和时间从一种格式到另一种格式的转换

ruby-on-rails - 使用 capybara 运行并行 Selenium 测试

ruby-on-rails - 如何创建一个临时文件并写入它然后允许用户下载它?

ruby-on-rails - 如何为下拉菜单添加占位符

ruby-on-rails - 有没有办法让 resque 作业将生成的 pdf 直接推送到浏览器?