Rspec 和 Rails 比较运算符的 NoMethodError

Rspec and Rails NoMethodError for comparison operator

我正在测试具有以下规范的用户模型:

require 'rails_helper'
require 'spec_helper'

RSpec.describe User, type: :model do

  it "password length to be equal to or greater than 8 characters" do
    expect(FactoryGirl.build(:user, password: '12345678')).to be >= 8
  end

end

工厂看起来像这样:

require 'faker'

FactoryGirl.define do
  factory :user do |f|
    f.name      {Faker::Name.name}
    f.email     {Faker::Internet.email}
    f.password  {Faker::Internet.password(8)}
  end
end

我将此行添加到我的 rails_helper:

require 'capybara/rspec'

我安装了以下 gem:

Using rspec-support 3.2.2
Using rspec-core 3.2.3
Using rspec-expectations 3.2.1
Using rspec-mocks 3.2.1
Using rspec 3.2.0
Using rspec-rails 3.2.1
Using factory_girl 4.5.0
Using factory_girl_rails 4.5.0
Using faker 1.4.3

当我执行测试时,我不断收到以下错误:

1) User password length to be equal to or greater than 8 characters
     Failure/Error: expect(FactoryGirl.build(:user, password: '12345678')).to be >= 8
     NoMethodError:
       undefined method `>=' for #<User:0x007fe097d35ea8>

我查看了文档 API Docs,我认为这是正确的方法,但是,我是 rspec 的新手。请告知我是否需要提供更多文档。任何帮助表示赞赏。

你的 password 应该是 >= 8 而不是 user object 所以它应该是这样的

expect(FactoryGirl.build(:user, password: '12345678').password.to_s.length).to be >= 8