我的功能测试文件
<?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
答案 0 :(得分:0)
我通过将url: v1/
更改为url: /v1
或将其删除来解决了这个问题。