【发布时间】:2012-01-01 06:35:27
【问题描述】:
我正在尝试测试一个 CakePHP 操作,该操作处理使用Security 组件保护的注册表单。我已经像这样在 UsersController 中配置了组件:
public $components = array(
'Security' => array('unlockedFields' => array('password_again')),
);
我可以在浏览器中执行操作,但是每当我运行测试用例时,它都会失败并显示以下消息:
"The request has been black-holed"
我尝试通过多种方式禁用测试用例中的验证:
$this->Users->Security->enable = false;
$this->Users->Security->validatePost = false;
$this->Users->Components->disable('Security');
$this->Users->Security = null; // desperate measure :)
// still fails
$this->testAction('/signup', array('data' => array(...), 'return' => 'contents'));
但测试坚持使用POST 请求的Security 验证。我正在使用 CakePHP 2.0.3 和 PHPUnit 3.6.3。
顺便说一句,我没有直接使用UsersController,而是CakePHP 为我烘焙的TestUsersController 类(我认为是generate 方法的替代品)。
在测试用例中处理安全组件的正确方法是什么?
【问题讨论】:
标签: security unit-testing cakephp post phpunit