rishatss
@rishatss
Simple Developer ^)

Как работает синтаксис тестов от Laravel — PHPUnit?

Добрый день :)

Вообщем сижу тут пишу тесты и заметил странное различие в синтаксисе. Или я снова что-то не вижу в документации.

Короче говоря есть такие тесты.
namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ThreadsTest extends TestCase
{
    use DatabaseMigrations;

    public function testA_user_can_view_all_threads()
    {
        $thread = factory('App\Thread')->create();

        $response = $this->get('/threads');

        $response->assertSee($thread->title);
    }

    function testA_user_can_read_a_single_thread()
    {
        $thread = factory('App\Thread')->create();

        $responce = $this->get('/threads/'. $thread->id);
        $responce->assertSee($thread->title);
    }
    function testNew_test()
    {
        $thread = factory('App\Thread')->create();

        $responce = $this->get('/thread');
        $responce->assertStatus(200);
    }
}


PHPUnit 5.7.20 by Sebastian Bergmann and contributors.

....                                                                4 / 4 (100%)

Time: 1.81 seconds, Memory: 16.00MB

OK (4 tests, 4 assertions)

Название функция я тут пишу с префиксом test как написано в документации.

При запуске phpunit тесты проходят все 3 успешно как и должны.

Но на Ларакасте пишут методы без префикса тест. То есть так:
<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ThreadsTest extends TestCase
{
    use DatabaseMigrations;

    public function a_user_can_view_all_threads()
    {
        $thread = factory('App\Thread')->create();

        $response = $this->get('/threads');

        $response->assertSee($thread->title);
    }

    function a_user_can_read_a_single_thread()
    {
        $thread = factory('App\Thread')->create();

        $responce = $this->get('/threads/'. $thread->id);
        $responce->assertSee($thread->title);
    }
    function new_test()
    {
        $thread = factory('App\Thread')->create();

        $responce = $this->get('/threads');
        $responce->assertStatus(200);
    }
}

PHPUnit 5.7.20 by Sebastian Bergmann and contributors.

W.                                                                  2 / 2 (100%)

Time: 652 ms, Memory: 8.00MB

There was 1 warning:

1) Warning
No tests found in class "Tests\Feature\ThreadsTest".

WARNINGS!
Tests: 2, Assertions: 1, Warnings: 1.


И у него все работает. А у меня не может найти его..

Также меня смущает количество тестов, почему их 4 ? А во втором варианте всего 2...
  • Вопрос задан
  • 636 просмотров
Решения вопроса 1
v_decadence
@v_decadence
Может в уроках у методов есть аннотация @test?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы