「Project」のネストされたリソースとして「Mastertag」モデルがあり、作成アクションは次のとおりです。
def create
@mastertag = @project.mastertags.build(params[:mastertag])
if @mastertag.save
redirect_to project_mastertags_path, notice: 'Mastertag was successfully created.'
else
render action: "new"
end
end
@project は before filter メソッドで初期化されます。
次のようなrspecテストがあります:
describe "POST create" do
context "with valid params" do
it "creates a new Mastertag" do
expect {
post :create, { project_id: @project.id, mastertag: FactoryGirl.attributes_for(:mastertag_without_project) }
}.to change(Mastertag, :count).by(1)
end
end
テストを実行すると、@mastertag.save メソッドは true を返しますが、カウントは変わりません。したがって、テストは失敗します。これはかなり奇妙に見えます。どこが間違っていますか?