Как получить содержимое ответа Lumen в виде строки? - PullRequest
1 голос
/ 10 марта 2019

Я пытаюсь получить содержимое ответа в виде строки из модульного теста с ответом Lumen:

class MovieQueryTest extends TestCase
{
    use DatabaseMigrations;

    public function testCanSearch()
    {
        Movie::create([
            'name' => 'Fast & Furious 8',
            'alias' => 'Fast and Furious 8',
            'year' => 2016
        ]);

        $response = $this->post('/graphql', [
            'query' => '{movies(search: "Fast & Furious"){data{name}}}'
        ]);

        $response->getContent(); // Error: Call to undefined method MovieQueryTest::getContent()
        $response->getOriginalContent(); // Error: Call to undefined method MovieQueryTest::getOriginalContent()
        $response->content; // ErrorException: Undefined property: MovieQueryTest::$content
    }
}

Но я не могу понять, как получить содержание ответа.

Я не хочу использовать метод Lumen TestCase->seeJson().

Мне просто нужно получить ответ.

1 Ответ

1 голос
/ 11 марта 2019

$response также содержит поле response, в которое вам нужно вызвать getContent(), поэтому сначала вам нужно извлечь его, а затем вызвать getContent(), поэтому в вашем коде это будет:

public function testCanSearch()
    {
        Movie::create([
            'name' => 'Fast & Furious 8',
            'alias' => 'Fast and Furious 8',
            'year' => 2016
        ]);

        $response = $this->post('/graphql', [
            'query' => '{movies(search: "Fast & Furious"){data{name}}}'
        ]);

        $extractedResponse = $response->response; // Extract the response object
        $responseContent = $extractedResponse->getContent(); // Extract the content from the response object

        $responseContent = $response->response->getContent(); // Alternative one-liner

}
...