我正在使用phalcon框架,我想编写一个单元测试。
在JS中,我正在使用Post Method和我的控制器
public function controllerAction {
$this->view->disable();
$body = $this->request->getRawBody();
$data = json_decode($body, true);
$status = array('success'=>true);
if (!$data) {
throw new \Exception("Invalid JSON Body");
}}
我需要一个测试功能来将后期数据传递给控制器 感谢
答案 0 :(得分:0)
加载 REST 模块,Codeception单元测试的示例:
modules:
enabled:
- Asserts
- Db
- \Helper\Unit
- \Helper\Database
- Phalcon:
bootstrap: ../app/config/bootstrap.php
cleanup: true
savepoints: true
- REST:
depends: Phalcon
然后在您的测试方法中,使用模拟数据向控制器发送帖子并检查响应:
public function someTest(\UnitTester $I) {
$I->sendPOST('/url_to_method', file_get_contents(codecept_data_dir() . 'testData.json'));
$I->seeResponseContainsJson([
"success" => "true"
]);
}
你的控制器方法应该略有不同,你需要调用 getJsonRawBody 而不是getRawBody,并在成功时返回实际的 $ success :
public function controllerAction {
$this->view->disable();
$body = $this->request->getJsonRawBody();
$data = json_decode($body, true);
$status = array('success'=>true);
if (!$data) {
throw new \Exception("Invalid JSON Body");
}
else{
$this->response->setContent(json_encode($status));
return $this->response;
}
}