用于状态验证的Rspec在Rails 5中不起作用

时间:2018-07-02 06:16:02

标签: ruby ruby-on-rails-5 rspec-rails

待办事项模型

class Todo < ApplicationRecord
  has_many :items, dependent: :destroy
  validates :title, :created_by, presence: true
end

RSpecs

require 'rails_helper'

RSpec.describe Todo, type: :model do
  it { should have_many(:items).dependent(:destroy) }
  it { should validate_presence_of(:title) }
  it { should validate_presence_of(:created_by) }
end

当我运行命令bundle exec rspec时,我看到:

Finished in 1.82 seconds (files took 0.97238 seconds to load)
5 examples, 2 failures

Failed examples:

rspec ./spec/models/todo_spec.rb:8 # Todo should validate that :title cannot be empty/falsy
rspec ./spec/models/todo_spec.rb:9 # Todo should validate that :created_by cannot be empty/falsy

谁能解释为什么失败?

1 个答案:

答案 0 :(得分:0)

这是shoulda-matchers中的问题。您需要添加到您的spec_helper.rb

RSpec.configure do |config|
  config.include(Shoulda::Matchers::ActiveModel, type: :model)
  config.include(Shoulda::Matchers::ActiveRecord, type: :model)
end