{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"Laravel phpunit: RuntimeException: Session store not set on request.","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/633 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"633\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  \n<div class=\"document\">\n\n\n<p>When using a method that requires a session in a unit test of a laravel based application, I encountered the following crash:<\/p>\n<pre class=\"literal-block\">\nRuntimeException: Session store not set on request.\n\n...\/vendor\/laravel\/framework\/src\/Illuminate\/Http\/Request.php:415\n...\/vendor\/kris\/laravel-form-builder\/src\/Kris\/LaravelFormBuilder\/Fields\/FormField.php:531\n...\/vendor\/kris\/laravel-form-builder\/src\/Kris\/LaravelFormBuilder\/Fields\/FormField.php:284\n...\/vendor\/kris\/laravel-form-builder\/src\/Kris\/LaravelFormBuilder\/Fields\/FormField.php:552\n...\/vendor\/kris\/laravel-form-builder\/src\/Kris\/LaravelFormBuilder\/Fields\/FormField.php:121\n...\/vendor\/kris\/laravel-form-builder\/src\/Kris\/LaravelFormBuilder\/Form.php:181\n[...]\n<\/pre>\n<p>I tried to solve it with the code given in <a class=\"reference external\" href=\"https:\/\/github.com\/laravel\/framework\/issues\/9632\">https:\/\/github.com\/laravel\/framework\/issues\/9632<\/a><\/p>\n<pre class=\"literal-block\">\n$this-&gt;app['request']-&gt;setSession($this-&gt;app['session']-&gt;driver('array'));\n<\/pre>\n<p>but now I got another exception:<\/p>\n<pre class=\"literal-block\">\nTypeError:\n Argument 1 passed to Symfony\\Component\\HttpFoundation\\Request::setSession()\n must be an instance of\n  Symfony\\Component\\HttpFoundation\\Session\\SessionInterface,\n instance of Illuminate\\Session\\Store given\n<\/pre>\n<p>I do not know why the Illuminate Session Store does not implement Symfony's SessionInterface in Laravel 5.5. Looks like a bug to me.<\/p>\n<p>My solution was to force the session into the request at the beginning of my test:<\/p>\n<pre class=\"literal-block\">\n$req = $this-&gt;app['request'];\n$sessionProp = new \\ReflectionProperty($req, 'session');\n$sessionProp-&gt;setAccessible(true);\n$sessionProp-&gt;setValue($req, $this-&gt;app['session']-&gt;driver('array'));\n<\/pre>\n<\/div>\n\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/633\/rev-raw\/f91ab1018de2b6c5ec7dbd2a90b04f916757abd0\/README.rst\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/633#README.rst\">README.rst<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
