0

私は私のアプリでは、次のhas_many/belongs_toモデル協会があります。Rails:ネストされた属性を持つモデルのユニットテストを設定するにはどうすればよいですか?

User < Company < Deed < Subtransaction

Deedaccepts_nested_attributes_for(およびvalidates_associated:subtransactionsを。 Minitestfixturesを使用してモデルの検証をテストしたいと思います。

私はモデルに提出されたparamsのハッシュを明示的に定義してテストを設定しました。

私のモデルのテスト:

class DeedTest < ActiveSupport::TestCase 

     def setup 
      @user = users(:dagobert) 
      @newco = companies(:newco) 
      params = { :deed => 
        { 
        :date => deeds(:inc_new).date, 
        :subtransactions_attributes => 
         { '1' => 
          { 
           :shareholder_name => "Shareholder 1", 
           :num_shares => subtransactions(:new_subt1).num_shares 
           }, 
          '2' => 
           { 
           :shareholder_name => "Shareholder 2", 
           :num_shares => subtransactions(:new_subt2).num_shares 
           } 
         } 
        } 
       } 
      @deed = @newco.deeds.new(params[:deed]) 

     end 

<my tests here> 

end 

が、これは私のテストをsetupする適切な方法ですか?あるいはもっとエレガントなメソッドやRailsのようなメソッドがありますか?

答えて

1

setupを使用して設定方法を定義することができます。テストの前に実行されます。

setup do 
    @data_form = { 
    title: Faker::Commerce.department, 
    description: Faker::Lorem.paragraph, 
    price: Faker::Commerce.price, 
    category_id: 1 
    } 
end