Laravel Проверка возврата контроллером неверного кода состояния - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь создать тест на API отдыха, используя Laravel. Мой тест состоит из 3 этапов: организовать, действовать и утверждать. На первом этапе я создаю запись в базе данных. Для второго теста я запрашиваю свою БД, наконец, я проверяю, верны ли тесты или нет.

use RefreshDatabase;

/** @test */
public function createTest() {
    // Arrange : name & message OK
    $message = ChatMessages::create([
        'username' => 'My name is long enough',
        'message' => 'my message is also OK'
    ]);

    // Act
    $getAllMessages = ChatMessages::all();

    $this->post('/message', $message->toArray())
        ->assertStatus(200)
        ->assertExactJson([
            'status' => 'ok', 'chat_message' => $message->toArray()
        ]);


    // assert : if name too short, data is not persisted
    $this->assertEquals(sizeof($getAllMessages), 1);
}

Мой маршрут:

Route::post('/message', 'ChatController@create');

У меня есть следующее сообщение об ошибке:

Ожидаемый код состояния 200, но получен 404. Не удалось подтвердить, что false - true.

В моем контроллере у меня есть этот код:

public function create(Request $request) {
    $input = $request->validate([
        'username' => 'required|string|min:3|max:255',
        'message' => 'required|string|min:1',
    ]);

    try {
        $message = ChatMessages::create([
            'username' => $input['username'],
            'message' => $input['message'],
        ]);
    } catch (\Exception $err) {
        Log::error("Cannot fetch chat messages");
        Log::error($err);
        abort(500);
    }

    return response()->json(['status' => 'ok', 'chat_message' => $message]);
}

$ request-> validate должен дать перенаправление 302, если не выполнено, и 200, если все в порядке.

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