为什么Cakephp的Controller第二个测试用例总是失败

时间:2019-10-24 07:06:45

标签: php cakephp phpunit testcase phpunit-testing

我正在为使用cakephp 2.x版本实现的应用程序实现控制器测试用例。

到目前为止,我有2个测试用例,并计划做更多。但是,我在第二个测试用例中堆叠在一起,并收到失败消息。如果我注释掉第一个测试用例并在第二个测试用例中运行它,则可以得到预期的结果。唯一的是如果我有两个测试用例,第二个测试用例总是失败。这是我的代码段。

我的运行命令是./cake test --stderr app Controller/EventsController,收到错误消息是Undefined index: HTTP_HOST

我知道有些奇怪的情况,它注释掉了第一个测试用例,但从未收到此错误并成功通过了第二个测试用例。感谢您的建议和想法。非常感谢。

App::uses('EventsController', 'Controller');
App::uses('UsersController', 'Controller');

class EventsControllerTest extends ControllerTestCase {
    public function setUp(){
        $this->testAction('/users/login/',[
            'method' => 'POST',
            'data' => [
                'User' => [
                    'username'=> 'bk.ll@llmail.com',
                    'password'=> '123456',
                    'clientType'=>'llWeb'
                ]
            ]
        ]);
        parent::setUp();
    }

    public function testEvents(){
        $this->testAction('/admin/events/');
        $this->assertInternalType('array', $this->vars['organisations']);
        $this->assertInternalType('string', $this->vars['userRole']);
        $this->assertInternalType('array', $this->vars['dutyRosterObj']);
        $this->assertInternalType('string', $this->vars['date']);
        $this->assertInternalType('boolean', $this->vars['isKkCdlc']);
    }

    public function testEventsList(){
        $this->testAction('/admin/events/list/');
        $this->assertInternalType('array', $this->vars['events']);
        $this->assertInternalType('array', $this->vars['organisations']);
        $this->assertInternalType('boolean', $this->vars['demoForSchool']);
        $this->assertInternalType('integer', $this->vars['offset']);
    }
}

1 个答案:

答案 0 :(得分:0)

您似乎忘记了在$_SERVER文件中配置phpunit.xml.dist变量:

<php>
  <server name="HTTP_HOST" value="example.org"/>
</php>

更多信息:https://phpunit.readthedocs.io/en/8.3/configuration.html