我对一个采用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)
但是我宁愿在创建项目时设置所有参数,就像在现实世界中一样。是否有特定方式传递参数?