Ruby& Rspec,有效地测试一系列值?

时间:2014-10-21 16:52:35

标签: ruby unit-testing rspec

我有一个模型,其中包含许多我想要测试的类似值,我很难找到最有效的方法。

我有一个模型Workweek,每周的每一天都有一个浮点字段("#{weekday}_hours"),允许员工输入当天的每日工作时间。我想测试并确保在给定的一天内不能输入高于24的值。

虽然我可以为一周中的每一天编写7种不同的测试,但我还是喜欢这样做:

let(:workweek) { create_week }
 [
  'monday',
  'tuesday',
  'wednesday',
  'thursday',
  'friday',
  'saturday',
  'sunday'
 ].each do |day|
  it "shoud not allow #{day}_hours to exceed 24" do
    # Test body here
  end

但我正在努力进行属性分配。我喜欢像workweek.#{day}_hours之类的东西,但这显然不会起作用,因为它不在字符串中。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你应该这样做

workweek.public_send "#{day}_hours"

#public_send方法接受方法名称为SymbolString个实例。