返回控制器中定义的操作数组

时间:2013-06-17 21:48:06

标签: ruby-on-rails

我有一个控制器,在我的测试中我想这样做:

%i(index show new create edit update destroy publish suspend).each do |action|
  # code
end

但它很冗长,我需要在许多测试中做到这一点。我知道我可以做到以下几点:

ProjectsController.instance_methods.take(8).each do |action|
  # code
end

但它很脆弱,特别是如果我们删除:suspend动作。是否有一种获取控制器文件中定义的所有方法的方法,而不是更多。

1 个答案:

答案 0 :(得分:2)

你可以做到

ProjectsController.action_methods 

在你的考试中。将返回任何公共方法。请记住,将任何非操作方法定义为私有

如果您想为多个控制器执行此操作,可以查看shared example

例如

shared_examples "test actions" do
  controller_class.action_methods.each do |action|
    <your tests>
  end
end

并在您的测试文件中,简单说

it_behaves_like "test actions"