在Laravel 5.2中查看作曲家在测试模式下无法正常工作

时间:2016-01-16 18:10:00

标签: php unit-testing laravel-5 functional-testing

我是一个像这样编写的视图作曲家

view()->composer('masterbox.partials.pipeline', function($view) {
  // Some vars and code
});

在我的一个观点中,我按照以下方式进行操作

@include('masterbox.partials.pipeline', ['my_var' => 1])

当我在我的浏览器上尝试它时,一切都很好,但是当我运行一个简单的测试时,一切都会爆炸......经过一些调试后我发现闭包没有被执行。

$this->visit('/connect/customer/subscribe')
      ->type($faker->firstName, 'first_name')
      ->type($faker->firstName, 'first_name')
      ->type($faker->lastName, 'last_name')
      ->type($faker->email, 'email')
      ->type($faker->phoneNumber, 'phone')
      ->type($password, 'password')
      ->type($password, 'password_confirmation')
      ->press("S'inscrire");

注意:它访问了一个页面,填写了表单并进行了订阅,然后它在@include的页面上重定向,并返回一个很大的错误,其中一部分是

exception 'ErrorException' with message 'Undefined variable: my_var' in /Users/Loschcode/Google Drive/projects/my_project_lo/website/storage/framework/views/7e11f284c02bc38adc60b5f8a0545df65d7cf5ec.php:7

我担心这是一个问题,它是我几天前下载的新鲜Laravel 5.2。有什么猜测?调试这个的任何方法?感谢

1 个答案:

答案 0 :(得分:0)

工作解决方案

我最终尝试了什么。我的问题是我的服务提供商组织。

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    class ComposerServiceProvider extends ServiceProvider
    {
        /**
         * Bootstrap the application services.
         *
         * @return void
         */
        public function boot()
        {

          foreach (glob(app_path().'/Http/ViewComposers/*.php') as $filename){  
            require_once($filename);
          }

        }

        /**
         * Register the application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }

如果您有类似的组织和问题,请用简单的require_once替换require,一切都会顺利。

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    class ComposerServiceProvider extends ServiceProvider
    {
        /**
         * Bootstrap the application services.
         *
         * @return void
         */
        public function boot()
        {

          foreach (glob(app_path().'/Http/ViewComposers/*.php') as $filename){  
            require($filename);
          }

        }

        /**
         * Register the application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }