2016-03-21 33 views
0

私のレールapiには、1対多の関係を持つ複数のモデルがあります。それぞれの設定を忘れていないことをテストする方法が欲しいです。 Minitestで、1対多リレーションシップが正しく設定されているかどうかをテストする最良の方法は何ですか?私が見たいのは、1つの領収書がそれに多くの売り上げを持つことができるということです。1対多の関係をテストする

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 

答えて

0

...のようなあなたのテストを書くことができます。

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

shoulda-matchers宝石は私のゴーに宝石のようなテストアソシエーションのです。関連のすべての可能なシナリオを手動でテストするという退屈を忘れずに保存します。

https://github.com/thoughtbot/shoulda

ただ、私はこのようなテストですあなたのGemfileに宝石を追加すると、あなたは

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

おかげでスティーブ・I'LLそれを深く見てください。私はこのプロジェクトにgemファイルを追加しないように制限されているかもしれません。より手作業でアプローチする必要があるかもしれませんが、私はそのテストが素敵に見えることに同意します。 –