Здравствуйте, я хочу написать тест для своего Api, и я создаю файл с именем:
LessonsTest.php
use App\Lesson;
use Tests\ApiTester;
/**
* Class LessonsTest
* That Test Our Lessons
*/
class LessonsTest extends ApiTester
{
/**
* @test
* Test All Lessons pass
*/
public function it_fetches_lessons()
{
// Make Lesson
$this->times(5)->makeLesson();
// Get URL we want to test
$this->getJson('api/v1/lessons');
// Pass Ok Response
$this->assertResponseOk();
}
/**
* Make Lesson method
* @param array $lessonFields
*/
private function makeLesson($lessonFields = [])
{
$lesson = array_merge([
'title' => $this->fake->sentence,
'body' => $this->fake->paragraph,
'some_bool' => $this->fake->boolean
], $lessonFields);
while ($this->times--) Lesson::create($lesson);
}
}
Теперь, когда вы видите его расширение из файла ApiTester:
namespace Tests;
use Faker\Factory as Faker;
class ApiTester extends TestCase
{
protected $fake;
protected $times = 1;
/**
* ApiTester constructor.
* @param $faker
*/
public function __construct()
{
$this->fake = Faker::create();
}
protected function times($count)
{
$this->times = $count;
return $this;
}
}
так что теперь все пишут, что у меня возникает проблема, когда я пытаюсь протестировать:
поставщик \ bin \ phpunit tests \ LessonsTest.php
Я получаю такую ошибку:
1) LessonsTest::it_fetches_lessons ErrorException: array_merge(): Argument #1 is not an array
Я много занимаюсь исследованиями, но не могу найти решения
Здравствуйте, спасибо за ваш ответ, где мне протестировать этот код?
Внутри makeLesson над array_merge
Я передаю private function makeLesson($lessonFields = []) { \Illuminate\Support\Facades\Log::info($this->fake->sentence); этот код, как вы говорите, но когда я снова пытаюсь запустить phpunit в cmd, я получаю ту же ошибку






Log::info($this->fake->sentence);что вы получаете?