【发布时间】:2015-03-17 11:23:28
【问题描述】:
我正在使用 Ruby on Rails 4.2.0 与 rspec-rails 3.1.0 和 should-matchers 2.7.0 p>
运行测试时出现此错误
Failure/Error: it { should validates_presence_of :name }
NoMethodError:
undefined method `validates_presence_of' for #<RSpec::ExampleGroups::Profile::Vaidations:0x00000007881768>
# ./spec/models/profile_spec.rb:5:in `block (3 levels) in <top (required)>'
这是我的模特
class Profile < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
validates :user, presence: true
validates :username, presence: true, uniqueness: { case_sensitive: false }, length: {maximum: 50}
validates :name, presence: true, length: {maximum: 50}
validates :phone, presence: true, uniqueness: { case_sensitive: false }, length: {maximum: 50}
validates :age, presence: true, length: {maximum: 4}
end
这是我的规范文件
require 'rails_helper'
describe Profile do
describe "vaidations" do
it { should validates_presence_of :name }
it { should validates_presence_of :age }
it { should validates_numericality_of :age }
it { should validates_presence_of :phone }
it { should validates_uniqueness_of :phone }
it { should validates_presence_of :username }
it { should validates_uniqueness_of :username }
end
describe 'association' do
it { should belongs_to :user }
end
end
这是我的 gemfile 中的测试组
group :test do
gem 'rspec-rails'
gem 'shoulda-matchers', require: false
gem 'factory_girl_rails'
end
我在 shoulda-matchers repo 上发现了同样的错误,但版本不同,它对我不起作用!! 我该怎么办?!!
【问题讨论】:
-
你试过这个
it { is_expected.to validate_presence_of(:name) }吗? -
尝试添加:
describe Profile, type: :model do -
感谢@AmitSharma,它工作正常:D
-
@AdhamEl-Deeb 您在其他领域遇到什么错误?
标签: ruby-on-rails rspec rspec-rails shoulda