如果您已登录,我发现从浏览器运行时会失败的测试。我需要确保在运行此测试之前清除会话。有没有一种简单的方法可以从测试中清除 CakePHP 会话?
我尝试调用 Session::Destroy(); 但测试似乎无法获得会话的可见性。
也许我试图错误地导入会话?我正在使用: App::import('Core', 'Session');
如果您已登录,我发现从浏览器运行时会失败的测试。我需要确保在运行此测试之前清除会话。有没有一种简单的方法可以从测试中清除 CakePHP 会话?
我尝试调用 Session::Destroy(); 但测试似乎无法获得会话的可见性。
也许我试图错误地导入会话?我正在使用: App::import('Core', 'Session');
您应该模拟 Session 组件。Mark Story 自己写了一篇文章来展示如何测试控制器。
我相信 gustavotkg 是正确的。我们应该使用模拟对象。不幸的是,按照代码设置的方式来做这件事并不完全直接。我将不得不回去重做一些事情。对于临时修复,这就是我所做的:
$appController = ClassRegistry::init('AppController');
$appController->constructClasses();
$appController->Session->destroy();
if(App::import('Core','Session')) {
$session = new CakeSession();
$session->start();
}
希望这可以帮到你..