我尝试使用Zend_Test_PHPUnit为我的应用程序编写单元测试,但我总是得到
1) IndexControllerTest::testValidation
Failed asserting last controller used <"error"> was "test"
我已经创建了一个测试控制器,但即使在那里我也无法让它工作。
有人可以帮忙吗?
谢谢!
class TestController extends Zend_Controller_Action
{
public function indexAction()
{
print 'test';
}
}
Bootstrap是:
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once'Zend / Loader / Autoloader.php'; Zend_Loader_Autoloader ::的getInstance();
phpunit.xml是:
<phpunit bootstrap="./bootstrap.php">
<testsuite name="Application Test Suite">
<directory>./application</directory>
</testsuite>
<testsuite name="Library Test Suite">
<directory>./library</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../library/</directory>
<directory suffix=".php">../application/</directory>
</whitelist>
</filter>
</phpunit>
测试控制器
class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
public function setUp()
{
$this->bootstrap = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
parent::setUp();
}
public function testValidation()
{
$this->dispatch('/test/');
$this->assertController("test");
}
}
答案 0 :(得分:0)
在TestController中看起来像是一个错误。
您的视图是否可用(/test/index.phtml)?
好的解决方案是检查抛出的异常(在Try / Catch Block中包装单元测试并打印到错误日志)。
答案 1 :(得分:0)
我得到了完全相同的错误,但由于完全不同的问题。
更通用的解决方案可能是将其添加到测试方法
中 print_r(strip_tags(
$this->bootstrap
->getBootstrap()
->getResource('layout')
->content
)); die;
这假设正在使用Zend_Layout ...它打印出error.phtml文件的内容,所以至少你可以看到到底发生了什么。
您应该看到类似的内容:
An error occurred
Application error
Exception information:
Message: {Your Error Message will appear here}
Stack trace:
{A stack trace will follow...}
在“消息:”之后显示您的特定错误消息,然后在“堆栈跟踪:”之后显示完整的堆栈跟踪。
希望这至少有助于调试潜在的问题