Как заменить URL и передать данные в behatPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как заменить URL и передать данные в behat

Сообщение Anonymous »

Я только учусь этому, поэтому прошу прощения, если это слишком просто. У меня есть такие сценарии:

Scenario: Create Task
Given I have the JSON payload:
"""
{
"task_list_id" : 3,
"title" : "From Behat",
"display_order" : 1
}
"""
When I send a POST request to task
Then one SQL ident is created

Scenario: Get the Task
When I send a GET request to "tasklist/{id}/tasks"
Then The response code should be 200
And The response content type should be "application/json"


Итак, первый сценарий устанавливает соединение, а затем JSON возвращает целочисленное значение. Теперь я хочу, чтобы значение это было заменено в следующем сценарии, где URL-адрес имеет заполнитель {id}.

Я попробовал установить $this- >вывести в тело (возвращенное целое число) в файле FeatureContext.php для первого сценария, а затем выполнить preg_replace во втором, чтобы изменить {id} на целое число. Похоже, что при запуске второго сценария выходные данные отключаются перед вызовом этого сценария.

Это мои контекстные методы для описанного выше:

/**
* @Then One SQL ident is created
*/
public function theResponseBodyShouldBeAnInteger() {
$this->theResponseContentTypeShouldBe('application/json');
$this->theResponseCodeShouldBe(201);

$body = $this->response->getBody()->getContents();
if (!ctype_digit($body)) {
throw New Exception(sprintf('Expected integer response but got "%s".', $body));
}

$this->output = $body;
echo "Output is '$this->output'\n";
}

/**
* @When I send a :method request to :uri
*
* @param $method
* @param $uri
*/
public function iSendARequestTo($method, $uri)
{
echo "Output is '$this->output'\n";
$uri = str_replace('{id}', $this->output, $uri);

try {
if ($method == 'POST' || $method == 'PATCH') {
$this->response = $this->client->request($method, $uri, ['json' => $this->requestPayload]);
} else {
$this->response = $this->client->request($method, $uri);
}
} catch (GuzzleHttp\Exception\ClientException $ex) {
throw new Exception($uri . "\n" . $ex->getResponse()->getBody()->getContents());
}
}


Подробнее здесь: https://stackoverflow.com/questions/420 ... a-in-behat
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»