Rspec Rails测试中的存根全局cookie变量

时间:2018-11-19 23:30:33

标签: ruby-on-rails rspec rspec-rails

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 :(得分:0)

默认情况下,rails-api中的控制器不包括用于处理cookie的中间件。如果您需要Cookie,则需要添加该中间件:

config.middleware.use ActionDispatch::Cookies

对于上述问题,您需要包括

ActionController::Cookies

在您的规格文件中