Yii2中的功能测试与代码获得404错误

时间:2018-04-16 09:44:06

标签: php testing yii2 codeception

我的功能测试文件

<?php
namespace api\tests;
use api\tests\FunctionalTester;
use Yii;

class ExampleCest
{
    public function _before(FunctionalTester $I)
    {
    }

    public function _after(FunctionalTester $I)
    {
    }

    // tests
    public function tryToTest(FunctionalTester $I)
    {
        $I->sendGET('example/test2');
        $I->seeResponseCodeIs(200); // Unauthorized
        $I->seeResponseContains('test2');    
    }
}

我尝试了2个不同的functional.suite.yml文件来运行测试:

// 1. functional.suite.yml, test run successfully:
    actor: FunctionalTester
    modules:
        enabled:
            - REST:
                url: http://api.xxxxx.local/v1/
                depends: PhpBrowser
                part: Json    
            - \api\tests\Helper\Functional


// 2. functional.suite.yml, test failed without setting defaultRoute in Yii configuration file, but succeed if I set `'defaultRoute' => 'v1/example/test2',`:
    actor: FunctionalTester
    modules:
        enabled:
            - REST:
                url: v1/
                depends: Yii2
                part: Json    
            - \api\tests\Helper\Functional        

失败时的错误消息:

  

ExampleCest:尝试测试       签名:api \ tests \ ExampleCest:tryToTest       测试:tests / functional / ExampleCest.php:tryToTest       场景 -        我发送了get&#34; example / test2&#34;         [请求] GET v1 / example / test2         [请求标题] []         [yii \ web \ HttpException:404]&#39; yii \ base \ InvalidRouteException:无法解析请求&#34;&#34;。在   /Applications/MAMP/htdocs/gaea/vendor/yiisoft/yii2/base/Module.php:537

我不知道为什么第二个functional.suite.yml文件失败了,因为我可以在http://localhost/MYPROJECT/api/web/index.php?r=v1/example/test2的浏览器中得到正确的答案。

我的环境:

Codeception: v2.3.8
Yii: v2.0.14
PHP: v7.0.26

1 个答案:

答案 0 :(得分:0)

我通过将url: v1/更改为url: /v1或将其删除来解决了这个问题。