2017-02-28 4 views
0

나에 대한 요청을 처리하는 Client-library를 사용하여 자체 Rest-API를 테스트하려고한다. 클라이언트가 초기화되고 "wantToGetUserOverClient ($ userId)"라는 작업이 추가되는 도우미를 작성했습니다. 클라이언트는 요청을 수행하여 JSON을 반환합니다. JSON은 JSON을 var_export() 할 때 의도 한대로 작동합니다. 나는 예외를 나머지 모듈을 확장하고 직접 공공 응답 필드를 할당하지만 얻기 위해 시도했다 :PhpBrower를 사용하지 않고 Codeception의 REST 클라이언트에서 JSON 응답을 저장하는 방법

[ModuleException] PhpBrowser: Page not loaded. Use `$I->amOnPage` (or hidden API methods `_request` and `_loadPage`) to open it 

내 질문 : 는 Codeception REST 모듈 응답의 클라이언트 응답을 저장하는 가장 좋은 방법은 무엇입니까 그래서 이미 존재하는 JSON 액션을 사용할 수 있습니다. 예를 들어 :

$I->wantToGetUserOverClient(1234); 
$I->canSeeResponseIsJson(); 

페이지를로드하지 않고는 PhpBrower를가는 가지.

미리 감사드립니다.

내 도우미 :

class ApiHelper extends \Codeception\Module\REST 
{ 
    private $backendApi; 

    public function __construct(ModuleContainer $moduleContainer, $config = null) 
    { 
     parent::__construct($moduleContainer, $config); 
     $this->backendApi = new BackendRestAPI(); 
    } 

    public function wantToGetUserOverClient($userId) 
    { 
     $this->response = $this->backendApi->user()->one($userId); 
    } 
} 

답변

1

당신은 REST 모듈을 오용하고 있습니다.
그러나 주장하는 경우 PhpBrowser를 모듈로 교체해야합니다.
구성 :

REST: 
    depends: YourModule 

seeResponseIsJson 작동하게하려면, YourModuleCodeception\Lib\InnerBrowser를 확장하고 _getResponseContentmethod를 구현해야합니다.

+0

답변 해 주셔서 감사합니다. 그것은 작동하고 그것으로 작업 솔루션을 구축 할 수 있습니다. 마지막으로 한 가지, 내가 REST 모듈을 잘못 사용하고 있다는 것을 알고 있습니다. 모든 것이 의도 한대로 작동하도록 PHPBrowser를 통해 요청해야하지만, 클라이언트를 테스트해야한다면 "베스트 프랙티스"가 무엇입니까? 클라이언트와 웹 서비스에 대한 별도의 테스트가 필요합니까? – CodingNinja

+0

예, 클라이언트와 웹 서비스의 테스트를 분리해야합니다. – Naktibalda

관련 문제