Я использую Rails 3 и RSpec 2.6.0.
Не уверен, что это возможно, но вот что я хотел бы сделать:
describe UsersController do
let(:user) { Fabricate :user }
describe "GET /user/:id" do
should_return_401_code_if_user_is_not_confirmed :get, :show, :id => user.id
end
describe "PUT /user/:id" do
should_return_401_code_if_user_is_not_confirmed :put, :update, :id => user.id
end
end
Я пытался реализовать макроскак это:
module ControllerMacros
def should_return_401_code_if_user_is_not_confirmed(verb, action, params = {})
it "returns a 401 code if the user is not an admin" do
send verb, action, params
response.code.should == "401"
end
end
end
Но при запуске этих спецификаций я получаю ошибку undefined local variable or method 'user'
.Я попытался переключиться на переменную @user, определенную в блоке before, но она тоже не работает.Я подозреваю, что это потому, что я не в примерном блоке.
Возможно ли передать в контроллер макрокоманды, определенные с помощью let или в блоке before?
Спасибо!