Ruby + Rspec方法的参数序列检查

时间:2016-07-27 12:19:28

标签: ruby rspec

我尝试测试方法,如果即将发生的参数序列不正确将会发生什么。我已经检查了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

1 个答案:

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