モデル
class RecipeIngredient < ActiveRecord::Base
validates :recipe_id, presence: true, on: :save
validates :ingredient_id, presence: true, on: :save
belongs_to :recipe
belongs_to :ingredient
has_many :quantities
end
テスト
require 'spec_helper'
describe RecipeIngredient do
it { should validate_presence_of(:recipe_id) }
it { should validate_presence_of(:ingredient_id) }
it { should belong_to(:recipe) }
it { should belong_to(:ingredient) }
context "valid" do
subject { RecipeIngredient.new(recipe_id: 1, ingredient_id: 1) }
it { should be_valid }
end
end
戻り値
失敗:
1) RecipeIngredient Failure/Error: it { should validate_presence_of(:recipe_id) } レシピ_id が nil に設定されている場合、エラーに「can't be blank」が含まれるとは予想していませんでした。エラーが発生しました: # ./spec/models/recipe_ingredient_spec.rb: 4:in `ブロック (2 レベル) in '
2) RecipeIngredient の失敗/エラー: it { should validate_presence_of(:ingredient_id) } 5:in `ブロック (2 レベル) in '
add on: :save がこのテストを破った理由がわかりません