Фоновый сценарий Symfony FOSTRestBundle Rest Behat / жрет проблему, код 500, тело запроса становится нулевым при отправке

У меня была похожая проблема с именем FeatureContext Behat проблема, неправильный запрос кода 400, проверка, возвращающая «Это значение не должно быть пустым». Эта проблема была решена с тем же ответом.

Используя Behat, я хочу заполнить таблицу базы данных несколькими тестовыми объектами, используя Rest API.

При выполнении команды POST расширение behat-api каким-то образом теряет содержимое тела запроса, поэтому вместо этого отправляется null, и в итоге я создаю либо пустые объекты, либо получаю ошибку с кодом 500, говоря, что не могу вставить нулевые значения в REST. объект.

У меня есть следующая особенность Behat:

album.feature

Feature: Provide a consistent standard JSON API endpoint

In order to build interchangeable front ends
As a JSON API developer
I need to allow Create, Read, Update, and Delete functionality

Background:
Given there are Albums with the following details:
| title                              | track_count | release_date              |
| The Dark Side of the Moon          | 12          | 1973-03-24T00:00:00+00:00 |
| Back in Black                      | 9           | 1980-06-25T23:22:21+00:00 |
| Thriller                           | 23          | 1982-11-30T11:10:09+00:00 |
And the "Content-Type" request header is "application/json"...

и следующая функция:

FeatureContext.php

...

/**
* @Given there are Albums with the following details:
*/
public function thereAreAlbumsWithTheFollowingDetails(TableNode $albums) {

foreach ($albums->getColumnsHash() as $album) {
$this->apiContext->setRequestBody(json_encode($album));
$this->apiContext->requestPath("/api/album", "POST");
$expectedResult = ["{",'"    status": "ok",',"}"];
$this->apiContext->assertResponseBodyIs(new \Behat\Gherkin\Node\PyStringNode($expectedResult,0));
echo 'passed.';
}
}

...

Я получаю следующую ошибку:

  Expected response body "{
"    status": "ok",
}", got "{
"code": 500,
"message": "Unexpected error occured: An exception occurred while executing
'INSERT INTO Album (title, release_date, track_count)
VALUES (?, ?, ?)' with params [null, null, null]:\n\nSQLSTATE [23000, 515]:
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]
Cannot insert the value NULL into column 'title', table 'LUNCH_QR_TEST.dbo.Album';
column does not allow nulls. INSERT fails.\n
SQLSTATE [01000, 3621]: [Microsoft][ODBC Driver 11 for SQL Server]
[SQL Server]The statement has been terminated."}".
(Imbo\BehatApiExtension\Exception\AssertionFailedException)

С print_r($this->request->getBody()->getContents()); в ApiContext.php Мне удалось определить, что содержание тела запроса для первого альбома:
{"title":"The Dark Side of the Moon","track_count":"12","release_date":"1973-03-24T00:00:00+00:00"} до https://github.com/imbo/behat-api-extension/blob/develop/src/Context/ApiContext.php#L986.

0

Решение

Заголовок должен быть установлен до отправка альбомов:

album.feature

  ...
Background:
Given the "Content-Type" request header is "application/json"And there are Albums with the following details:
...
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]