2016-07-20 9 views
0

Erstellen Aktionstest im Controller-Test nicht ordnungsgemäß funktioniert und gibt keine Informationen, was das Problem ist.Erstellen Aktion im Controller-Test funktioniert nicht

FAIL["test_should_create_invoice", InvoicesControllerTest, 2016-07-20 14:18:44 +0200] 
test_should_create_invoice#InvoicesControllerTest (1469017124.50s) 
     "Invoice.count" didn't change by 1. 
     Expected: 2 
      Actual: 1 
     test/controllers/invoices_controller_test.rb:20:in `block in <class:InvoicesControllerTest>' 

Objektparameter sind von der tatsächlichen Postanforderung, die gut funktionierte. Ich habe nur client_id und seller_id params geändert, um sie von Fixtures zu bekommen. Ist es möglich zu überprüfen, warum diese Post-Anfrage nicht in der Testumgebung funktioniert?

invoices_controller_test.rb

test "should create invoice" do 
    assert_difference('Invoice.count') do 
     post :create, invoice: { 
      date: "2016-07-07", 
      invoice_name_attributes: { 
      "number"=>"9", 
      "month"=>"7", 
      "year"=>"2016" 
      }, 
      place: "Szczecin", 
      seller_id: clients(:client_google).id, 
      client_id: clients(:client_microsoft).id, 
      client_name: "Nazwa", 
      client_street: "Ulica", 
      client_zip: "23-232", 
      client_city: "Miasto", 
      client_country: "Polska", 
      client_email: "[email protected]", 
      client_phone: "732-320-322", 
      invoice_items_attributes: 
      { 
      "0" => { 
       item_id: "2", 
       quantity: "1", 
       unit_price: "1.30", 
       tax_rate: "23", 
       net_price: "1.30", 
       value_added_tax: "0.30", 
       total_selling_price: "1.60", 
       _destroy: "false" 
      } 
      }, 
      net_price: "1.30", 
      value_added_tax: "0.30", 
      total_selling_price: "1.60", 
      total_price_in_words: "jeden euro 60/100", 
      currency_rate_table_name: "129/A/NBP/2016", 
      currency_rate_name: "EUR", 
      currency_rate: "4.4469" 
     } 
    end 

    assert_redirected_to invoice_path(assigns(:invoice)) 
    end 

Dieser Beitrag Anfrage ordnungsgemäß funktioniert in dev und Produktion environtemtn

Started POST "/invoices" for 127.0.0.1 at 2016-07-20 14:37:09 +0200 
Processing by InvoicesController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"tgTMZS15vBKkzadPrjgIatcxoi5CgFU79St5UYDDbyo=", "invoice"=>{"date"=>"2016-07-20", "invoice_name 
_attributes"=>{"number"=>"3", "month"=>"7", "year"=>"2016"}, "place"=>"Warszawa", "seller_id"=>"2", "client_id"=>"1", "client_name"=>"Karol", "cl 
ient_street"=>"Cicha", "client_zip"=>"71-100", "client_city"=>"Warszawa", "client_country"=>"Polska", "client_email"=>"[email protected] 
om", "client_phone"=>"", "invoice_items_attributes"=>{"0"=>{"item_id"=>"2", "quantity"=>"1", "unit_price"=>"2", "tax_rate"=>"23", "net_price"=>"2 
.00", "value_added_tax"=>"0.46", "total_selling_price"=>"2.46", "_destroy"=>"false"}}, "net_price"=>"2.00", "value_added_tax"=>"0.46", "total_selling_price"=>"2.46", "total_price_in_words"=>"dwa euro 46/100", "currency_rate_table_name"=>"138/A/NBP/2016", "currency_rate_name"=>"EUR", "curre 
ncy_rate"=>"4.3811"}, "commit"=>"Create Invoice"} 
+0

Verwendung hebeln oder byebug in berechnet Controller, um zu überprüfen, warum der Datensatz ungültig ist –

+0

Danke @ArtemBiserov. Jetzt weiß ich, dass ich item_id vergessen habe und es auch von Fixtures bekommen muss. Danke nochmal. – Volz

Antwort

0

Ich glaube, Sie brauchen params schicken wie:

post :create, params: { invoice: {...} } 
Verwandte Themen