2016-03-21 16 views
0

In meinem Rails Api habe ich mehrere Modelle mit einer zu vielen Beziehungen und ich möchte einen Weg zu testen, dass ich nichts vermissen, die Einstellung jeder von ihnen. Was ist der beste Weg in Minitest zu testen, ob eine Eins-zu-Viele-Beziehung korrekt eingerichtet ist? Was ich sehen möchte, ist, dass eine Quittung viele Verkäufe darauf haben kann.Test eins zu viele Beziehung arbeiten

test 'multiple sales can have one receipt' do 
sale = Sale.new 
sale.receipt = 1234 
sale.save 

sale2 = Sale.new 
sale2.receipt = 1234 
sale2.save 


assert_equal sale.invoice_id, sale2.invoice_id, "receipts are not the same" 
end 

Antwort

0

ich so würde testen schreiben:

test 'one receipt can have multiple sales' do 
    receipt = Receipt.last 
    sale1 = receipt.sales.create 
    sale2 = receipt.sales.create 

    assert receipt.sales.size > 1, "receipt should have multiple sales" 
    assert_equal sale1.receipt, sale2.receipt, "receipts are not the same" 
end 
0

Die shoulda-matchers Juwel ist mein go-to Juwel für die Prüfung Vereinigungen wie diese. Spart die Mühe, alle möglichen Szenarien für die Assoziationen manuell zu testen.

https://github.com/thoughtbot/shoulda

einfach das Juwel zu Ihrem Gemfile hinzufügen und Sie können Ihre Tests wie ...

class UserTest < Test::Unit::TestCase 
    should have_many(:posts) 
end 
+0

Dank Steve, ich werde schau dir das genauer an. Ich bin möglicherweise darauf beschränkt, diesem Projekt keine Edelsteindateien hinzuzufügen. Benötigt vielleicht einen manuellen Ansatz, aber ich stimme zu, dass dieser Test schön aussieht. –

Verwandte Themen