在RSpec中获得"范围的不良价值"

sam*_*207 8 ruby rspec ruby-on-rails rspec3

这是我的代码:

#app/models/user.rb
class User < ActiveRecord::Base

  def display_name
    name.split(' ').try(:first)
  end
end

#spec/models/user_spec.rb
require 'rails_helper'

RSpec.describe User, :type => :model do
  let(:user) { FactoryGirl.create :user }

  it "should return the correct display name" do
    expect ( user.display_name ).to eql("Chuck")
  end
end

#spec/factories/users.rb
FactoryGirl.define do
  factory :user do
    provider "MyString"
    uid "MyString"
    name "Chuck Norris"
    oauth_token "MyString"
    oauth_expires_at "2014-07-24 07:31:36"
  end
end 
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此规范时,我收到以下错误:

Failure/Error: expect ( user.display_name ).to eql("Chuck")
     ArgumentError:
       bad value for range
Run Code Online (Sandbox Code Playgroud)

它似乎to从rails 检查方法active support,但我认为to应该是一个方法rspec.以下是我的回溯

# /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.2/lib/active_support/core_ext/string/access.rb:62:in `to'
     # ./spec/models/user_spec.rb:7:in `block (2 levels) in <top (required)>'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:148:in `instance_exec'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:148:in `block in run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:210:in `call'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:210:in `block (2 levels) in <class:Procsy>'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-rails-3.0.2/lib/rspec/rails/adapters.rb:72:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:294:in `instance_exec'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:294:in `instance_exec'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/hooks.rb:430:in `block (2 levels) in run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:210:in `call'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:210:in `block (2 levels) in <class:Procsy>'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/hooks.rb:432:in `run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/hooks.rb:485:in `run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:303:in `with_around_example_hooks'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:145:in `run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:494:in `block in run_examples'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:490:in `map'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:490:in `run_examples'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:457:in `run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:112:in `block (2 levels) in run_specs'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:112:in `map'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:112:in `block in run_specs'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/reporter.rb:54:in `report'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:108:in `run_specs'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:86:in `run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:70:in `run'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:38:in `invoke'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/rspec-core-3.0.3/exe/rspec:4:in `<top (required)>'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/bin/rspec:23:in `load'
     # /Users/sameera/.rvm/gems/ruby-2.0.0-p247/bin/rspec:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我检查了这个解决方案,它不起作用.

我上线了

  • Rails 4.0.2
  • Rspec 3.0.0

sev*_*cat 31

删除之间的空格expect(user.display_name).如果你愿意,你可以在括号内有一个,但不能在它们之前.