@procode
Разработчик

Как можно тестировать куски кода Laravel из командной строки, без браузера?

Здравствуйте.

Подскажите, можно ли как-то отлаживать отдельные блоки кода из консоли, не прибегая к помощи браузера [и роутера]?

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

https://site.com/testcontroller

а как-то так:

$ ~/laravel/utils php testcontroller.php

Но в этом случае мне совершенно непонятно, как все эти наследования и зависимости и т.п. организовать, как подключить классы?

Или может еще какие решения есть?

Спасибо.
  • Вопрос задан
  • 197 просмотров
Решения вопроса 2
@NubasLol
php artisan tinker
Ответ написан
@jazzus
Я использую данный сценарий для создания тестов:

1. Создается файл теста tests\Unit\Contacts\StoreContactTest.php
(по примеру ExampleTest)

2. Там метод теста формы
public function testRun()
{
      // Создаем юзера
      $user = factory(User::class)->create();
      $user->roles()->attach(Role::ID__CUSTOMER);

      // предупреждаем Вселенную, что он сейчас будет действовать
      $this->actingAs($user);

      // этот юзер отправляет форму
      $response = $this->json('POST',
                         route('contact.store'),
                         ['country_id' => Country::ID__RUSSIA,
                          'city'=>'Vjcrsds',
                         // любые поля
                        ]);

      // Ждем ответа
      $response->assertStatus(200);
}

3. Запуск командой phpunit (выполняются все тесты)

Внимание - делюсь исключительно своим опытом. В тестирование не вникал, была цель сейчас все написать и забыть) Но у меня работает и ошибки показывает. Тестирую в основном store/update/delete. Удобно тем, что не нужно руками заполнять большие формы + тестируется весь сайт после рефакторинга, ошибки могут возникнуть в неожиданных местах. Под тесты лучше завести отдельную тест-базу т.к. данных получается много.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы