Rails Rspec与循环和多个类似测试的主题

时间:2013-12-30 19:55:22

标签: ruby-on-rails ruby rspec

我有几个相同的测试,唯一不同的是参数,但我无法逐个循环它们

以下是测试

的示例
subject.orange['orange tray'] do |tray|   
    expect(tray).not_to be_nil

subject.apple['apple tray'] do |tray|   
    expect(tray).not_to be_nil

这是我想要做的事情

fruits_list = ['orange', 'apple']

fruits_list.each do |fruit|
  subject."#{fruit}[#{fruit} tray]" do |tray|    <------- the error, I can't get this to work
    expect(tray).not_to be_nil
end

1 个答案:

答案 0 :(得分:3)

您需要使用send方法,而不仅仅是将字符串传递给对象。你可能会做类似的事情:

['orange', 'apple'].each do |fruit|
  subject.send(fruit.to_sym)["#{fruit} tray"] do |tray|
    expect(tray).not_to be_nil
  end
end