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
我正在测试具有以下规范的用户模型:
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