Rails:如何使用嵌套属性为我的模型设置单元测试?

时间:2016-03-25 10:48:28

标签: ruby-on-rails unit-testing associations nested-attributes fixtures

我的应用中有以下has_many / belongs_to模型关联:

User< Company< Deed< Subtransaction

其中Deed accepts_nested_attributes_for(和validates_associated:subtransactions。我希望使用Minitestfixtures测试我的模型验证。

我通过明确定义提交给我的模型的参数的哈希来设置我的测试。

我的模特测试:

   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 个答案:

答案 0 :(得分:1)

您可以使用setup来定义设置方法。它将在测试之前运行。

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