Я пытаюсь настроить новую среду Symfony с именем travis
для запуска модульных тестов в контейнере Travis.
Я настроил эту среду, чтобы отличать ее от prod
и dev
.
В настоящее время у меня есть:
- a
SYMFONY_ENV=travis
настройка переменной среды в Travis
- a
config_travis.yml
, который содержит мою конфигурацию для среды Travis
- a
app_travis.php
, которые определяют среду для загрузки
- a
.travis.yml
:
>
language: php
php:
- "7.2.17"
services:
- mysql
install:
- composer install --no-interaction
- echo "USE mysql;\nUPDATE user SET password=PASSWORD('${MYSQL_PASSWORD}') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
- ./bin/console doctrine:database:create --env=travis
- ./bin/console doctrine:migration:migrate --env=travis --no-interaction
script:
- ./vendor/bin/simple-phpunit
Мой проект выглядит так:
Некоторые примеры тестов, которые я запускаю:
UserTest.php
, который тестирует модель User.php
:
<?php
namespace Tests\AppBundle\Entity;
use AppBundle\Entity\User;
use PHPUnit\Framework\TestCase;
use AppBundle\Entity\Responsibility;
class UserTest extends TestCase
{
public function testId()
{
$user = new User();
$id = $user->getId();
$this->assertEquals(-1, $id);
}
}
LoginControllerTest.php
, который проверяет LoginController.php
контроллер:
<?php
namespace Tests\AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\BrowserKit\Cookie;
use Symfony\Component\HttpFoundation\Response;
class LoginControllerTest extends WebTestCase
{
/*
* Test the login form
* Logins with (admin, password : a)
*/
public function testLogin()
{
// Create a new client to browse the app
$client = static::createClient();
$crawler = $client->request('GET', '/login');
$this->assertEquals(200, $client->getResponse()->getStatusCode(), "Unexpected HTTP status code for GET ");
// Get the form
$form = $crawler->selectButton('Connexion')->form();
// Fill the login form input
$form['_username']->setValue('admin');
$form['_password']->setValue('a');
// Send the form
$client->submit($form);
$crawler = $client->followRedirect();
$this->assertContains(
'Bienvenue admin.' ,
$client->getResponse()->getContent()
);
return array($client,$crawler);
}
}
Моя проблема: все команды выполняются в среде travis
, кроме модульных тестов. Я хочу иметь возможность запускать модульные тесты в dev
env на моем компьютере, но в travis
env в контейнере Travis.
Как мне настроить мой PHPUnit, чтобы он мог работать в среде travis
и использовать мой файл config_travis.yml
?