2017-02-14 27 views
1

Я довольно новичок в PHP. Меня попросили преобразовать некоторые из моих тестов с Java на PHP, чтобы соответствовать тому, что спрашивает клиент.PHP с использованием клиента Guzzler между методами

Итак, я начал с базовых тестов (API) и решил использовать Гузслера и Бехата, чтобы облегчить ситуацию. Проблема в том, что я не могу использовать один и тот же клиент для всех своих тестов, что, скорее всего, связано с тем, что я не знаю, что я делаю в PHP.

Вот фрагмент, который я пытаясь получить работу:

<?php 

use Behat\Behat\Context\Context; 
use Behat\Testwork\Hook\Scope\BeforeSuiteScope; 
use GuzzleHttp\Client; 


class FeatureContext implements Context 
{ 

/** 
* @BeforeSuite 
*/ 
public static function prepare(BeforeSuiteScope $scope) 
{ 
    // Setup of Guzzle for API calls 
    $client = new Client(['base_uri' => 'http://test.stxgrp.com.ar']); 
} 

/** 
* @Then the response status code should be :arg1 
*/ 
public function theResponseStatusCodeShouldBe($arg1) 
{ 
    //Going to make an assert 
} 

/** 
* @When /^I issue a GET request at url (.*)\/(.*)$/ 
*/ 
public function iIssueAGETRequestAtUrl1($PROVIDER_NAME, $PROVIDER_PLACE_ID) 
{ 
    $response = $client->request('GET', '$PROVIDER_NAME.$PROVIDER_PLACE_ID'); 
} 

} 

проблема у меня в том, что внутри метода iIssueA ...., переменная $ клиент не признается (я должен использовать тот же самый клиент, который устанавливается в подготовить функцию).

+0

Вы пытались иметь клиента как переменную класса? и назовите его с помощью $ this-> client – lauda

+0

Я думаю, что [Тестирование базового API symfony для аутентификации с помощью behat3] (http://www.inanzzz.com/index.php/post/l41o/testing-a-basic-auth-symfony -api-with-behat3), [Api-запрос для тестирования ответов с behate v2 включает json, xml, html и cli] (http://www.inanzzz.com/index.php/post/ajqn/api-request-response- test-with-behat-v2-includes-json-xml-html-and-cli) и [Api-запрос отклика на запрос с behate v1] (http://www.inanzzz.com/index.php/post/xw1v/api -request-response-testing-with-behat-v1) было бы полезно для вас. – BentCoder

ответ

2

Вы можете иметь что-то вроде этого:

private $client; 

/** 
* @BeforeSuite 
*/ 
public function prepare(BeforeSuiteScope $scope) 
{ 
    // Setup of Guzzle for API calls 
    $this->client = new Client(['base_uri' => 'http://test.stxgrp.com.ar']); 
} 

/** 
* @When /^I issue a GET request at url (.*)\/(.*)$/ 
*/ 
public function iIssueAGETRequestAtUrl1($PROVIDER_NAME, $PROVIDER_PLACE_ID) 
{ 
    $this->client->request('GET', '$PROVIDER_NAME.$PROVIDER_PLACE_ID'); 
} 

для того, чтобы использовать $this вам нужно удалить static из prepare метода.