【问题标题】:How to dispatch url with subdomain in Zend PHPUnit Controller test?如何在 Zend PHPUnit Controller 测试中使用子域发送 url?
【发布时间】:2010-11-30 08:50:27
【问题描述】:

我想测试在子域 www.username.domain.com 上工作的控制器

问题是当我在 ControllerTestCase 中调度时,它会抛出 Zend_Controller_Dispatcher_Exception


routes.php:

$userRouter = new Zend_Controller_Router_Route_Hostname(':user.domain.com'));

$router->addRoute('user', $userRouter->chain(new Zend_Controller_Router_Route('',
                            array('controller' => 'user'))));

用户控制器测试:

require_once 'AbstarctControllerTestCase.php';

class UserControllerTest extends AbstarctControllerTestCase
{
    public function setUp()
    {
        $this->cleardb();
        parent::setUp();
    }

    public function testRoute()
    {
        $this->dispatch('www.username.domain.com');
        $this->assertController('user');
    }
}

AbstarctControllerTestCase:

abstract class AbstarctControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    public function setUp()
    {
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap()
    {
        chdir(dirname(dirname(dirname(dirname(__FILE__)))));
        require 'application/test/controllerunit/routes.php';
        Zend_Session::start();
    }
(...)
}

结果:

PHPUnit 3.3.17 by Sebastian Bergmann.

F

Time: 1 second

There was 1 failure:

1) testRoute(UserControllerTest)
Failed asserting last controller used was "user"

当我发送像 /login 这样的普通 URI 时,它运行良好,但问题是发送带有主机名的 URL。

有什么想法吗? 谢谢大家。

【问题讨论】:

  • 路由器和路由是否也在测试中添加到 FrontController 中?查看dispatch(); 的来源,看看哪些数据用于调度(例如主机名)。

标签: zend-framework testing subdomain phpunit dispatch


【解决方案1】:

您是否尝试在 setup 中设置 $_SERVER 变量?

例如

$_SERVER['SERVER_NAME'] = 'www.username.domain.com';

然后像往常一样调用 dispatch。

见 - http://php.net/manual/en/reserved.variables.server.php

【讨论】:

  • 为我工作。如果 Zend_Controller_Request_HttpTestCase 提供一个 setHost() 方法就好了。
【解决方案2】:

在调用dispatch()之前定义$_SERVER['HTTP_HOST']

http://framework.zend.com/issues/browse/ZF-11680下已经有一张同样关注的票

【讨论】:

    猜你喜欢
    • 2014-02-10
    • 2012-03-04
    • 2023-03-13
    • 2013-03-08
    • 2014-07-22
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多