Один из вариантов может заключаться в том, чтобы обеспечить модуль модулем, в котором есть ваша спецификация.
include Auth # This is your module with your generalized spec inside a method
it "redirects without authentication" do
unauthorized_redirect("get", "new")
end
Тогда, в нашем методе, мы могли бы сделать цикл через различные типы авторизации:
module Auth
def unauthorized_redirect(request, action)
[nil, :viewer, :editor].each do |a|
with_user(a) do
eval "#{request} :#{action}"
response.should redirect_to login_path
# whatever other expectations
end
end
end
end