2017-02-28 8 views
0

私のリクエストを処理するClient-Libraryを使用して独自のRest-APIをテストしようとしています。 私は、クライアントが初期化され、 "wantToGetUserOverClient($ userId)"というアクションが追加されたヘルパーを作成しました。クライアントは要求を行い、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上でリクエストを行う必要がありますが、すべてが意図どおりに機能するようにする必要がありますが、クライアントをテストしなければならない場合は、「ベストプラクティス」となるでしょうか? クライアントとWebサービスのテストは別ですか? – CodingNinja

+0

はい、本当にクライアントとWebサービスのテストを分離する必要があります。 – Naktibalda

関連する問題