【问题标题】:undefined method `its' for RSpec (Hartl's Ruby on Rails Tutorial)RSpec 的未定义方法“它”(Hartl 的 Ruby on Rails 教程)
【发布时间】:2015-01-18 19:42:45
【问题描述】:

我在 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
...
...

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

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.................

【问题讨论】:

    标签: ruby-on-rails ruby rspec


    【解决方案1】:

    你把下面的写成:

    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

    【讨论】:

      【解决方案2】:

      您需要安装 gem 'rspec-its' - 它提供了 its 方法作为指定属性的预期值的简写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-09
        • 1970-01-01
        • 2015-11-13
        • 2013-05-23
        • 2016-08-20
        相关资源
        最近更新 更多