PHP Laravel Unit Testing, Пользовательские сообщения об ошибках - PullRequest
0 голосов
/ 04 июля 2018

Я новичок в Laravel, а также юнит-тестирование в целом.

Я написал простой тест, используя руководство от Laravel ,

public function testGet(){
    $this->get('/api/accounts/1')->assertStatus(200)->assertJsonStructure([
        'status','data'
    ]);
}

При выполнении теста генерируется следующая ошибка (которая предназначена):

Time: 127 ms, Memory: 12.00MB
There was 1 failure:

1) Tests\Unit\AccountApiTest::testGet
Invalid JSON was returned from the route.

У меня вопрос, есть ли способ настроить сообщение, генерируемое при сбое теста для всех доступных утверждений в Laravel? Для этого случая сообщение

Invalid JSON was returned from the route.

1 Ответ

0 голосов
/ 04 июля 2018

Нет, вы не можете легко изменить сообщение, так как оно жестко закодировано в Illuminate / Foundation / Testing / TestResponse.php :

/**
 * Validate and return the decoded response JSON.
 *
 * @param  string|null  $key
 * @return mixed
 */
public function decodeResponseJson($key = null)
{
    $decodedResponse = json_decode($this->getContent(), true);

    if (is_null($decodedResponse) || $decodedResponse === false) {
        if ($this->exception) {
            throw $this->exception;
        } else {
            PHPUnit::fail('Invalid JSON was returned from the route.');
        }
    }

    return data_get($decodedResponse, $key);
}

Вы можете получить пользовательские сообщения, переписав TestResponse.

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