Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Codeception中保存来自REST客户端的JSON响应而不使用PhpBrower_Php_Rest_Response_Helper_Codeception - Fatal编程技术网

如何在Codeception中保存来自REST客户端的JSON响应而不使用PhpBrower

如何在Codeception中保存来自REST客户端的JSON响应而不使用PhpBrower,php,rest,response,helper,codeception,Php,Rest,Response,Helper,Codeception,我正在尝试使用一个客户端库来测试我自己的RESTAPI,该客户端库为我处理请求。 我已经编写了一个帮助程序,在该程序中初始化客户端,并添加了一个名为“WantGetUserOverClient($userId)”的操作。客户端执行请求并返回一个JSON,该JSON在I var_export()处理JSON时按预期工作。 我尝试扩展Rest模块并直接分配公共响应字段,但出现异常: [ModuleException] PhpBrowser: Page not loaded. Use `$I->

我正在尝试使用一个客户端库来测试我自己的RESTAPI,该客户端库为我处理请求。 我已经编写了一个帮助程序,在该程序中初始化客户端,并添加了一个名为“WantGetUserOverClient($userId)”的操作。客户端执行请求并返回一个JSON,该JSON在I var_export()处理JSON时按预期工作。 我尝试扩展Rest模块并直接分配公共响应字段,但出现异常:

[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);
    }
}

您误用了REST模块。
但是如果您坚持,您必须用您的模块替换PhpBrowser。
配置:

REST:
  depends: YourModule

要使
seereponseisjson
正常工作,
YourModule
必须扩展
Codeception\Lib\InnerBrowser
并实现
\u getResponseContent

感谢您的回答和解决方案。它是有效的,我可以用它构建一个有效的解决方案。最后一件事,我知道我误用了REST模块。我应该通过PHPBrowser发出请求,这样一切都可以按预期进行,但是如果您还必须测试客户端,那么什么是“最佳实践”?客户机和Web服务的单独测试?是的,您应该真正地单独测试客户机和Web服务。