我无法解决这个问题。
$this->_request->setBasePath('http://localhost/');
$this->_request->setModuleKey('admin');
$this->_request->setControllerKey('controller-page');
$this->_request->setActionKey('index');
$this->_sslRedirect->preDispatch($this->_request);
$this->assertRedirectRegex('/https:/');
在我的控制器插件中,preDispatch()可能会也可能不会重定向到SSL。这适用于浏览器,但是我无法为它编写测试。测试失败,如下:
Failed asserting response redirects to URL MATCHING "/https:/"
/srv/app/zend/library/Zend/Test/PHPUnit/Constraint/Redirect.php:190
/srv/app/zend/library/Zend/Test/PHPUnit/ControllerTestCase.php:764
/srv/app/www/tests/lib/Saffron/Controller/Plugin/SslRedirectTest.php:36
/usr/bin/phpunit:46
我还在preDispatch()行之后立即在Zend_Test_PHPUnit_ControllerTestCase中尝试了$ this-> dispatch(),但由于某种原因导致错误404找不到...
有什么想法吗?
答案 0 :(得分:0)
如果这是你的单元测试代码,我没有看到任何模拟,我完全确定我理解为什么这样实现(如果目标是强制https连接)
我认为这两行存在问题。
$this->_sslRedirect->preDispatch($this->_request);
$this->assertRedirectRegex('/https:/');
如果您可以发布您正在测试的完整操作,并且您正在使用完整的单元测试来测试它,那将会有所帮助。