Поскольку я не знаю, может ли behat внедрить параметры моей функции Behat FeatureContext с чем-либо, кроме строк, я хотел бы знать, могу ли я разделить строки таким образом, чтобы у меня остался массив json_objects.
Мне удалось сделать это с json_decode
и json_encode
, но это кажется немного повторяющимся, когда я сначала декодирую строку объектов, только чтобы закодировать ее обратно в один объект.
В каждом примере есть следующая функция Behat:
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:
"""
[{
"artist":"Pink Floyd",
"title":"The Dark Side of the Moon",
"songs":[
{"title":"Speak to Me", "length":254}
{"title":"Breathe", "length":192}
{"title":"On the Run", "length":188}
]
},
{
"artist":"AC/DC",
"title":"Back to Black",
"songs":[
{"title":"Hells Bells", "length":205}
{"title":"Shoot to Thrill", "length":302}
{"title":"What Do You Do for Money Honey", "length":244}
]
}]
"""
And the "Content-Type" request header is "application/json"
и следующая функция в FeatureContext.php:
...
public function thereAreAlbumsWithTheFollowingDetails(string $jsonString) {
$albums = json_decode($jsonString, true);
foreach ($albums as $album) {
$albumJson = json_encode($album);
$this->apiContext->setRequestBody($albumJson);
$this->apiContext->requestPath("/api/album", "POST");
}
}
...