当前位置: 首页 > 知识库问答 >
问题:

功能测试在Yii2与代码欺骗得到404错误

张德佑
2023-03-14

我的功能测试文件

<?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        

失败时显示错误消息:

示例Cest:尝试测试签名:api\测试\示例Cest: tryToTest测试:测试/功能/示例Cest.php: tryToTest场景-我发送get"例如/测试2"[请求]GET v1/例如/测试2[请求头][][yii\web\HttpExc0019:404]'yii\base\InvalidRouteExc0019:无法解决请求""。在 /Applications/MAMP/htdocs/gaea/vendor/yiisoft/yii2/base/Module.php:537

我不知道为什么第二个功能。一套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个答案

太叔马鲁
2023-03-14

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

 类似资料:
  • 我在api中有下面的YML代码。一套yml 当我使用运行时,它给出以下错误/供应商/bin/codecept运行 我尝试了许多YML配置组合没有任何运气。如何解决这个问题?

  • 当我在验收测试中更改应用程序模型时,测试实际使用该模型,当我在功能测试中更改应用程序模型时。。。测试仍然使用yii/web/application,我需要它来使用我的公共/组件/应用程序模型。我怎样才能改变这一点? 功能_bootstrap包含我的自定义模型...(通用/组件/应用程序)我完全困惑...... 当我运行测试代码时: 然后我得到错误: 这个nowSQL是在common\compone

  • 我在使用Yii2进行Codeception时遇到了一些问题。我刚刚升级到Yii 2.0.10,一直在使用本指南 我收到错误:

  • 我有一个PHP应用程序,我们正在添加测试,使用代码欺骗。我们试图添加指定(和验证)到我们的套件,但它不被识别。你如何正确设置指定与代码欺骗一起使用? 在我的composer.json中,我有以下内容: 我在添加指定和验证后运行了作曲家更新,并获得了以下输出: 我有一个这样的测试(主要是由generate:test生成的): 当我运行单元测试时,我会得到以下输出: 我使用的参考文献是:http://

  • 我正在编写一组简单的PHP函数,我只使用纯PHP7,没有框架,什么都没有。这些函数稍后将在CMS中的插件中使用,但这不是重点。我想使用Codeception为我的函数编写单元测试(为了熟悉它,我知道Codeception基本上只在这里运行PHPUnit),但我真的不知道如何以合理的方式将Codeception指向我的代码。 我的结构如下:我有,其中包含我想要测试的函数,大致如下: 我使用Compo

  • 我正在尝试使用Yii2基本框架设置Codeception。单元测试工作正常。验收也在工作,但如果我想使用模块,我会得到错误。这是文件 Phantomjs安装并运行在上。 我得到的错误是: 这是作曲家文件,给你关于版本的想法。 配置文件是否有任何错误,或者是否有人面临相同的问题?