Compartilhe exemplos RSpec que fazem várias solicitações

Digamos que você tenha um monte de controladores e todos eles precisem se comportar de uma maneira específica (por exemplo, eles devem responder com um BAD_REQUEST quando os parâmetros estão faltando) e você deseja verificar se há um conjunto completo de parâmetros como este:

it "should check for missing parameters" do
params = { :required1 => "a", :required2 => "b" }
params.each_key do |key|
result
= request_proc.call(params.except(key))
result
.should be_bad_request
end
end

Agora, supondo que você implementou isso no ApplicationController, você não pode ter certeza de que cada controlador realmente se comporta assim (pode ser sobrescrito).
Você pode repetir este trecho em cada controlador, mas isso não é DRY.

A terceira opção é criar exemplos compartilhados para o grupo e passar um proc para fazer a solicitação, para mantê-lo portátil entre as diferentes solicitações:

shared_examples_for "ApplicationController" do |params|
it
"should complain about missing parameters" do
params.each_key do |key|
result
= request_proc.call(params.except(key))
result
.should be_bad_request
end
end
end

e use-o em suas especificações:
descreva “POST ‘novo'” do
let (: request proc) {lambda {| params | postar ‘novo’, parâmetros}}
comporta -se como “ApplicationController”, {: obrigatório1 => “a”,: obrigatório2 => “b”}