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