Здесь мой метод модели основан на config()
global;
public function getGroup() { if(config('app.pages.'.$this->group.'.0')) { return $this->group; } return "city"; }
Здесь я пытаюсь проверить этот метод в своем модульном тестовом классе;
public function testGetGroupReturnsCityAsDefault() { $response = new Response(); $response->group = "town"; $test = $response->getGroup(); dd($test); }
Ошибка, которую я получаю;
Error: Call to a member function make() on null /home/vagrant/sites/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:62 /home/vagrant/sites/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:163
Я знаю, что это связано с глобальным config (). Но не уверен, как установить его в моем тесте. Я пытался
public function setUp() { config(['app.pages' => [ 'city' => [........
Но получил ту же ошибку. Как я могу это настроить?
Я не уверен, что вы решили это, но у меня была аналогичная проблема.
Мне нужно было сделать две вещи, чтобы заставить ее работать:
1) Убедитесь, что вы вызываете родительский метод setUp следующим образом:
public function setUp() { parent::setUp(); // other stuff }
2) Убедитесь, что ваш тестовый класс расширяет Laravel TestCase
а не PHPUnit_Framework_TestCase
Краткое объяснение : в основном ошибка, которую вы получаете, заключается в том, что ContainerInstance
of Laravel является нулевым, поскольку вы проходите через PHPUnit и поэтому никогда не создавались. Если вы выполните вышеуказанные шаги, вы убедитесь, что Laravel сначала создаст экземпляр контейнера.
PS Если вы собираетесь в конечном итоге ссылаться на переменные env
, вы должны заглянуть в раздел phpunit.xml
для переменных phpunit.xml
.