Rails的版本:5.1.1,4.2.7從集成測試會話不加載會話Cookie
升級我有一個集成測試,擊中一個URL(從ActionDispatch :: IntegrationTest inherting)。該URL中的控制器會將一些內容放入會話中。測試然後試圖斷言某些值現在出現在會話中。
我session_store.rb:
Rails.application.config.session_store :cookie_store, key: '_companySite_session', expire_after: 1.year
什麼我發現是,會話變量,從集成測試爲「會話」叫,始終是一個空哈希({})。
如果我在測試中查看request.host,我會看到「www.example.com」。如果我看response.cookies或餅乾,我看到:
#<Rack::Test::Cookie:0x00000006037108
@default_host="www.example.com",
@name="_companySite_session",
@name_value_raw=
"_companySite_session=a3RnYjRvWDlUYzRZaVlaTnlsK2RkeXBWcWFNYnQ1RVo4azNqdXNOanVWWWZVT2o5Vk0wTkVhY1dFOTBxdWNzMU5sY3c1cXhXRm0xT3JZWWZGUnluSnRuYTVoaWQ1S3ZZRXVMa1YyQ2pUMjEvOExaWkcybTdGT3lUZnZ0STRSSGVpc0dPU1VONWNwTEZxQlRvODN3eXdKZTYreVIvNDR4Y0IxMms2djlPWUZCcktYWmo1SElSZ0ttaHA5UWk5MDA5aVJzaGt3cUJ4V2tFY295ZGo4ak8ydUI3OWRnTUdkcmRpanVML3phalJtZ2c1OXByeExiRDhlcy9rR1RYUGh6NlkxV2xqNWl2VjlCMm45WXo0ajBKN0VTQ29CVGRQRVErOVIrNFZwdEZBc01oL2RaSGltUjdleGlWN3YySTdJUzcvbVlJbWdwWVNUVkw4K1pPc3JsUWxOR1BZNFVrUXFtYVVObmNlYlZrSklEbk5aU3VTck5MNm12a0NBMVF2aG5xLS1pSEJTVTVLZzJ2ZVA2M1IzTmJ4Njh3PT0%3D--f253c4e1678e53896a247b087e741cf006c5874f",
@options={"path"=>"/", "expires"=>"Fri, 08 Jun 2018 19:46:22 -0000", "HttpOnly"=>nil, "domain"=>"www.example.com"},
@value=
"a3RnYjRvWDlUYzRZaVlaTnlsK2RkeXBWcWFNYnQ1RVo4azNqdXNOanVWWWZVT2o5Vk0wTkVhY1dFOTBxdWNzMU5sY3c1cXhXRm0xT3JZWWZGUnluSnRuYTVoaWQ1S3ZZRXVMa1YyQ2pUMjEvOExaWkcybTdGT3lUZnZ0STRSSGVpc0dPU1VONWNwTEZxQlRvODN3eXdKZTYreVIvNDR4Y0IxMms2djlPWUZCcktYWmo1SElSZ0ttaHA5UWk5MDA5aVJzaGt3cUJ4V2tFY295ZGo4ak8ydUI3OWRnTUdkcmRpanVML3phalJtZ2c1OXByeExiRDhlcy9rR1RYUGh6NlkxV2xqNWl2VjlCMm45WXo0ajBKN0VTQ29CVGRQRVErOVIrNFZwdEZBc01oL2RaSGltUjdleGlWN3YySTdJUzcvbVlJbWdwWVNUVkw4K1pPc3JsUWxOR1BZNFVrUXFtYVVObmNlYlZrSklEbk5aU3VTck5MNm12a0NBMVF2aG5xLS1pSEJTVTVLZzJ2ZVA2M1IzTmJ4Njh3PT0=--f253c4e1678e53896a247b087e741cf006c5874f">
換句話說,會話cookie似乎是存在,並且其領域似乎符合要求的主機。我也使用How to decrypt a Rails 5 session cookie manually?的代碼打印出此cookie的值,並且該值是正確的。
我的測試環境的config指定config.action_controller.allow_forgery_protection =假
在這一點上,我的想法。該cookie在那裏,看起來很好,它設置爲請求的域,它沒有過期,但會話仍然是一個空的哈希。莫名其妙地沒有得到更新?它試圖更新但是失敗了嗎?我已經用盡了一切。
該測試在Rails 4.2.7下正常工作。
雖然我沒有深入瞭解它,但我也一直在發現測試的flash變量似乎總是空的。同樣,在Rails 4中正常運行的測試正在破裂,因爲閃光似乎總是空的。我認爲閃光和會議是相關的,所以也許同樣的問題影響他們兩個。