Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 04.02.2017 12:52:59

Вопрос по тестированию (Mockery)

Доброго времени суток!

7.0, 5.3

Контроллер:

public function index()
    {
        // Модель внедряется в конструкторе
        $users = $this->user->whereHas('roles', function ($query) {
            $query->where('on_display', '!=', 'нет');
        })->paginate(3);

        return view('users.index', ['users' => $users]);
    }

Тест, который проходит:

public function testIndex()
    {

       $response = $this->call('GET', 'users');
        $this->assertViewHas('users');
        $users = $response->original->getData()['users'];
        $this->assertInstanceOf('Illuminate\Contracts\Pagination\Paginator', $users);

}


Тест, который не проходит:

public function testIndex()
    {

        //Эта часть теста проходит
        $mock = Mockery::mock('Eloquent', User::class);
        $mock->shouldReceive('whereHas')->once();
        $this->app->instance(User::class, $mock);
        $this->call('GET', 'users');

        // А если с этой строкой, то ошибка
        $this->assertViewHas('users');
       
    }

The response was not a view.
Failed asserting that false is true.

Никто не подскажет, в чем может быть дело?
Функционально все работает нормально. На сам характер задачи прошу внимания не обращать, я только учусь тестировать.
И второй вопрос, может, ну его, это юнит-тестирование, обойтись функциональным?

С уважением.

Не в сети

Подвал раздела