請求書モデル (クライアントには多くの請求書があり、請求書はクライアントに属しています) をテストしており、create メソッドが機能するかどうかを確認しようとしています。
これは私が思いついたものです:
before do
@valid_invoice = FactoryGirl.create(:invoice)
@valid_client = @valid_invoice.client
end
it "creates a new Invoice" do
expect {
post :create, { invoice: @valid_client.invoices.build(valid_attributes), client_id: @valid_client.to_param }
}.to change(Invoice, :count).by(1)
end
これは私の請求書工場です:
FactoryGirl.define do
factory :invoice do
association :client
gross_amount 3.14
net_amount 3.14
number "MyString"
payment_on "2013-01-01"
vat_rate 0.19
end
end
これは、invoices_controller の create メソッドです。
def create
@client = Client.find(params[:client_id])
@invoice = @client.invoices.build(params[:invoice])
respond_to do |format|
if @invoice.save
format.html { redirect_to([@invoice.client, @invoice], :notice => 'Invoice was successfully created.') }
format.json { render :json => @invoice, :status => :created, :location => [@invoice.client, @invoice] }
else
format.html { render :action => "new" }
format.json { render :json => @invoice.errors, :status => :unprocessable_entity }
end
end
end
これらは有効な属性です。つまり、請求書を正常に作成するために必要な属性です。
def valid_attributes
{
gross_amount: 3.14,
net_amount: 3.14,
number: "MyString",
payment_on: "2013-01-01",
vat_rate: 0.19
}
end
これらはすべて有効です。client_id が欠落している可能性がありますか?
カウントが 1 つも変化しなかったことを示しているだけなので、何が問題なのかわかりません。私は何を間違っていますか?