Как запустить тест phpunit в контроллере laravel? - PullRequest
0 голосов
/ 01 ноября 2018
i want to run phpunit test in controller for


adding some data  in database and  testing api of project both 

PostAddTest класс

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class PostAddTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testExample()
    {
        $api = "/post/add";
        $request = [
            'title' => "xyz form....",
            'content' => 'post add by xyz user.'
        ];

        $response = $this->postJson($api,$request);

        info("daa : ".print_r($response->getContent(),true));
        $this->assertTrue(true);
    }
}

если я использую phpunit, то успешно работаю

vendor/phpunit/bin --filter testExample

PHPUnit 6.5.5 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 6.84 seconds, Memory: 28.00MB

OK (1 test, 1 assertion)

я добился успеха, но

если я запускаю с использованием контроллера, то получаю ошибку, подобную этой

Вызов функции-члена make () для null {"exception": "[object] (Symfony \ Component \ Debug \ Exception \ FatalThrowableError (код: 0): Вызов функции-члена make () для null в PostProject / поставщик / Laravel / рамки / SRC / Осветите / Foundation / Тестирование / вопросы / MakesHttpRequests.php: 335

MainController

public function index() {
      (new PostAddTest)->testExample()  
}

1 Ответ

0 голосов
/ 01 ноября 2018

Вы должны сначала вызвать метод setUp. Как это:

$postAddTest = new PostAddTest;
$postAddTest->setUp();
$postAddTest->testExample();


Я не знаю ваш вариант использования, но если вы действительно хотите запустить свои тесты в контроллере, в качестве альтернативы вы можете использовать Symfony Process и сделать это:

use Symfony\Component\Process\Process;
...
public function index() {
  $process = new Process(array('vendor/bin/phpunit', '--configuration', 'phpunit.xml'), base_path());
  $process->run();

  // (Optional) Get the phpunit output
  $process->getOutput();

}

или используйте PHP exec () function http://php.net/manual/en/function.exec.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...