如何在ruby中从字符串运行任意对象方法?

Bou*_*ley 5 ruby testing rspec

所以我对ruby一般都是新手,我正在为我正在创建的对象编写一些rspec测试用例.很多测试用例都是相当基础的,我只想确保正确填充和返回值.我想知道我是否有办法用循环结构来做这件事.而不是必须为我想测试的每个方法都有一个assertEquals.

对于实例:

describe item, "Testing the Item" do

  it "will have a null value to start" do
    item = Item.new
    # Here I could do the item.name.should be_nil
    # then I could do item.category.should be_nil
  end

end
Run Code Online (Sandbox Code Playgroud)

但我想要一些方法来使用数组来确定要检查的所有属性.所以我可以做点什么

propertyArray.each do |property|
  item.#{property}.should be_nil
end
Run Code Online (Sandbox Code Playgroud)

这个或类似的东西会起作用吗?感谢您的任何帮助/建议.

sep*_*p2k 6

object.send(:method_name)object.send("method_name")将工作.

所以在你的情况下

propertyArray.each do |property|
  item.send(property).should be_nil
end
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.