我尝试测试方法,如果即将发生的参数序列不正确将会发生什么。我已经检查了nil参数。 我的方法接受id,new_name,我想知道当参数是new_name,id
时该怎么做希望我的问题很明确。
我想测试的方法:
def update_recipe(id, new_name)
raise ArgumentError if id.nil? || new_name.nil?
recipe = find_recipe_by_id(id).dup
recipe.name = new_name
@storage[id] = recipe
recipe.freeze
end
这是rspec代码:
context 'when argument sequence is not correct' do
let(:added_recipe) { subject.add_recipe recipe }
it 'raises an ArgumentError' do
expect { subject.update_recipe 'Pasta', added_recipe.id }.to raise_error ArgumentError
end
end
答案 0 :(得分:1)
您可以根据您所知道的id或new_name应该执行与处理nil相似的操作。例如,确保id是一个整数。
def update_recipe(id, new_name)
raise ArgumentError unless id.is_a? Integer
raise ArgumentError if id.nil? || new_name.nil?
recipe = find_recipe_by_id(id).dup
recipe.name = new_name
@storage[id] = recipe
recipe.freeze
end