Глобальная переменная cookie-заглушки в тесте Rspec Rails - PullRequest
0 голосов
/ 20 ноября 2018

Тест Rspec выглядит следующим образом:

RSpec.describe Api::UsersController, type: :controller do
    describe 'POST #create' do
        subject { post :create, params: create_params }

        context '...' do

В контроллере я использую:

cookies.permanent[:foo] == 'bar'

Однако я получаю:

NameError:
       undefined local variable or method `cookies' for #<Api::UsersController:0x000000137702f0>

На другой вопрос SO есть ответ, в котором говорится добавить type: :request к describe, но это вызывает другие ошибки. Я бы предпочел просто полностью заглушить cookies, поэтому cookies.permanent[:foo] == 'bar' всегда ложно. Как мне это сделать?

1 Ответ

0 голосов
/ 20 ноября 2018

По умолчанию контроллеры в rails-api не включают промежуточное ПО, которое обрабатывает куки.Если вам нужны файлы cookie, вам нужно добавить это промежуточное программное обеспечение:

config.middleware.use ActionDispatch::Cookies

Для решения вышеуказанной проблемы необходимо включить

ActionController::Cookies

в свои файлы спецификаций

...