Юнит-тесты в Laravel

LaravelКомментариев нет

Консольные команды

создание тестов

#
// создание теста в каталоге Feature
php artisan make:test UserTest

// создание теста в каталоге Unit
php artisan make:test UserTest --unit

запуск тестов

#
// запуск тестов в linux системе
phpunit

// запуск тестов в windows
vendor\bin\phpunit 
// vendor/bin/phpunit

// выводим в красивом виде, выполненные тесты
vendor\bin\phpunit --testdox

 

Примеры функции тестирования различных ситуаций в Laravel

проверим статус ответа(тестирование роутеров)

#
/**
* Route "/login"
*
* @return void
*/
public function testWebRoutesLogin(): void
{
    $response = $this->call('GET', '/login');
    $response->assertStatus(200);
}
#
/**
 * Route "/account/{page}"
 *
 * @return void
 */
public function testWebRoutesAccount(): void
{
    $response = $this->call('GET', '/account/{page}');
    $response->assertStatus(200);
}

сравнение возвращаемого страницей контента

#
/**
* Content compare
*
* @return void
*/
public function testContentCompare(): void
{
    $response = $this->call('GET', 'user/profile');
    $this->assertEquals('Hello World', $response->getContent());
}

проверим что бы в ответе приходил JSON в котором обязательно есть следующие элементы [‘el1’, ‘el2’, ‘el3’]

#
/**
* Responce structure contains arr ['status', 'data', 'message']
*
* @return void
*/
public function testApiTest()
{
    $this->post('/test')
         ->assertJsonStructure([
                'el1', 'el2', 'el3'
           ]);
}

проверка успешной авторизации пользователя через api(в ответе приходит JSON)

#
public function testBasicTest()
{
    $response = $this->json(
            'POST',
            '/api/login',
            [
                'email' => 'user@mail.ru', // верные данные
                'password' => '123', // верные данные
    ]);

     $response
            ->assertStatus(200)
            ->assertJson([
                'status' => 'success',  
                'data' => true, // есть поле data в ответе, не важно чему равно
                'message' => true
     ]);
}

 

Функции тестирования в Laravel

Перечислим основные функции предоставляемые для тестирования в Laravel

#

 

 


Комментарии закрыты!