Rspec - 在测试中处理params的最佳方法是什么?

时间:2013-11-25 18:16:25

标签: ruby-on-rails testing rspec

我对一个采用params散列的方法进行了测试,如果未在params中设置则总数为0:

item.rb的:

  def set_template_values(params)
    self.set_nil_values
    self.template = 1
    self.deduction = 0
    self.tax_amount = 0
    self.tax_id = 0
    self.tax_rate = 0
    self.unclaimed_tax = 0
    self.cost = 0
    self.total = 10  
      if params[:total].to_i > 0
        self.total = params[:total]
      end
  end

这是我的测试:

    let(:template_item){Item.new(:template_check => 'True' ,  
        :name => 'Gas' ,  
        :category_id => 1 ,  
        :sub_category_id => 24 ,  
        :job_id => 1, 
        :total => 10)}

  it 'Template Item' do
      template_item.set_nil_values
      template_item.set_template_values(template_item.attributes)
      template_item.save
      template_item.total.should be == 10
  end

我收到此错误:

  1) Item Template Item
     Failure/Error: template_item.total.should be == 10
       expected: == 10
            got:    #<BigDecimal:7fb9f316e270,'0.0',9(36)>

如果我在测试中这样做,我可以使它工作:

  template_item.set_template_values(:total => 10)

但是我宁愿在创建项目时设置所有参数,就像在现实世界中一样。是否有特定方式传递参数?

0 个答案:

没有答案