【发布时间】:2012-04-16 07:01:04
【问题描述】:
所以我有这个单元测试类:
class HomeControllerTest extends ControllerTestCase
{
public function testLoginAction()
{
$this->dispatch('/home/login');
$this->assertController('home');
$this->assertAction('login');
$this->assertQueryCount('div.login', 1);
}
public function testProcessloginAction()
{
$this->getRequest()
->setMethod('POST')
->setPost(array("username" => "example@example.com",
"password" => "password"));
$this->dispatch('/home/processlogin');
$session = new Zend_Session_Namespace('session');
$this->assertEquals($session->isLoggedIn, true);
$this->assertRedirectTo('/home');
}
}
这是测试的输出:
root@ubuntu:/mnt/hgfs/app# phpunit --stderr
PHPUnit 3.5.15 by Sebastian Bergmann.
.root@ubuntu:/mnt/hgfs/app#
第一个测试运行良好,但第二个测试在 $this->dispatch('/home/processlogin'); 之前退出线。我不知道为什么,但我能看到的唯一不同是 home/processlogin 进行了重定向。
有人在使用 ZF 1.11.x 时遇到过这种情况(针对 1.11.7 和 1.11.11 进行测试)吗?
【问题讨论】:
-
你在使用自定义的基础测试类吗?也许问题出在哪里。我使用使用 ZF Tool 创建的默认 ZF 项目测试了您的代码,它可以工作(当然,有失败的断言),但它会分派请求。
标签: php unit-testing zend-framework phpunit