首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试创建cookie时未定义的方法“`permanent”

尝试创建cookie时未定义的方法“`permanent”
EN

Stack Overflow用户
提问于 2014-02-02 04:41:50
回答 2查看 576关注 0票数 1

我已经创建了一个模块,这样我就可以快速创建用户、作为用户登录、删除用户和注销用户。下面是一个简化的示例:

代码语言:javascript
复制
module UserAuth
    def sign_in(user)
        cookies.permanent[:remember_token] = 'asda'
    end
end

但是,如果我运行此规范:

代码语言:javascript
复制
describe 'UserAuth' do
    include UserAuth

    context 'signed up' do
        let(:user_1) { FactoryGirl.build(:user) }
        before { sign_up user_1 }

        contex 'signed in' do
            before { sign_in user_1 }

            it {}

        end
    end
end

我得到了这个错误:

代码语言:javascript
复制
   undefined method `permanent' for #<Rack::Test::CookieJar:#>

我觉得奇怪的是cookies对象是可用的,但是这个permanent方法由于某种原因不可用。我可以通过简单地在UserAuth模块中包含另一个模块来解决这个问题吗?如果是,这个模块的名称是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-06-11 08:08:06

似乎RackTest、CookieJar和Cookie类没有提供这些方法来在其MockSession中进行测试。我所做的是模拟以这种方式设置cookie的方法,而不是返回我自己的结果,或者使用RackTest的cookie方法来设置cookie。

注意:在这个例子中,我模拟了一个通过关注点设置cookie的方法。

代码语言:javascript
复制
before :each do
  allow(MyConcern).to receive(cookie_method) { create(:cookie, :test) }
end

it 'tests cookie' do
  cookie_method

  expect {
    put item_path({test_id: 2})
  }.to change(Item, :test_id)

  expect(response.cookies[:cookie_id]).to eq 'test'
end 

这是另一篇关于同样问题的文章,showing implementations

另一种选择是使用RackTest的CookieJar方法,它提供了创建cookie的基础知识,以及很少的其他选项。

代码语言:javascript
复制
it 'has a cookie' do
  cookies[:remember_token] = 'my test'
  post items_path
  expect(response.cookies[:remember_token]).to eq 'my test'
end

你可以查看RackTest的CookieJar/Cookie Source中的方法,它非常简单,但对于API docs来说就没那么多了。

我希望这对某些人有帮助,我也希望其他人能提出更好的解决方案!

票数 0
EN

Stack Overflow用户

发布于 2014-02-02 05:29:59

我建议您遵循Rails教程中定义的测试方法,如http://ruby.railstutorial.org/book/ruby-on-rails-tutorial#code-sign_in_helper中所示。Rack::Test中的CookieJar对象与ActionDispatch::Cookies中的Rails使用的对象不同。

请参阅相关RailsTutorial: NoMethodError 'permanent' Rake::Test::CookieJar

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21503397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档