получить запрос в тесте phpunit Laravel ищет другой URL - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь создать простой тест phpunit для модели Note в моем приложении Laravel.Я просто хочу проверить, что запрос get к конкретному экземпляру заметки отобразит некоторые свойства этой заметки.

У меня есть модель, фабрика, контроллер и маршрут Note.

Модель

namespace App;
use Illuminate\Database\Eloquent\Model;

class Note extends Model
{
    protected $guarded = [];

    public function path()
    {
        return "/notes/{$this->id}";
    }
}

Завод

use Faker\Generator as Faker;

$factory->define(App\Note::class, function (Faker $faker) {
    return [
        'title' => $faker->sentence,
        'body' => $faker->paragraph,
    ];
});

Маршрут

Route::get('/notes/{note}', 'NotesController@show');

Контроллер

namespace App\Http\Controllers;
use App\Note;
use Illuminate\Http\Request;


class NotesController extends Controller
{
      public function show(Note $note)
      {
         return view('notes.show', compact('note'));
      }
}

Тест

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

class NotesTest extends TestCase
{

    use WithFaker, RefreshDatabase;

    /** @test */
    public function a_user_can_view_a_note()
    {
        $this->withoutExceptionHandling();

        $note = factory('App\Note')->create();
        // dd($note->path());

        $this->get($note->path())
            ->assertSee($note->title)
            ->assertSee($note->body);
    }
}

Когда я запускаю тест a_user_can_view_a_note, я получаю эту ошибку:

1) Тесты \ Feature \ NotesTest :: a_user_can_view_a_note Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException: GET http://shepherding.test/1

Вместо поиска http://shepherding.test/notes/1, он ищет http://shepherding.test/1.


PS: dd($note->path()); дает "/notes/1".

Я могу заменить $this->get($note->path()) на это:

$this->get('/notes/' . $note->id);

или даже заменить его жестко закодированнымзначение:

$this->get('/notes/1');

Но тест продолжает пытаться получить http://shepherding.test/1.

Я не могу понять, почему /notes/ удаляется из запроса на получение.

У меня есть другие тесты для индекса и магазина, которые все работают нормально.Только этот показывает это поведение.

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