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

yii2中夹具的联合验收试验

殷烨
2023-03-14

对不起,这个问题可能很愚蠢,但我无法通过谷歌搜索找到答案。

我的问题是:我创建了文件TaskCest。在backend\acceptance下的php,在该文件中有以下声明

use yii\test\FixtureTrait;
    public function fixtures() {
      return ['tasks' => TasksFixture::className()];
    }

我有一个fixture类,数据在data目录中。

但当我运行脚本时,会出现以下错误:

[yii\base\ErrorException] ltrim() expects parameter 1 to be string, object given

错误很明显,但我无法理解,在文件yii2\test\FixtureTrait中。php:145我有一个函数,它希望name参数是字符串,但对象是自动传递的[我不调用getFixture]。有什么问题吗。有人面对同样的问题吗?

-vvv输出

测试/验收/TaskCest.php: getFixture

[yii\base\ErrorException] ltrim() expects parameter 1 to be string, object given  
                                                                                    
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/Lib/Di.php:123
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/Lib/Di.php:123
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/Test/Cest.php:136
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/Test/Cest.php:148
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/Test/Cest.php:82
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/Test/Test.php:90
/home/nginx/www/planning-back/vendor/phpunit/phpunit/src/Framework/TestSuite.php:728
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/PHPUnit/Runner.php:98
/home/nginx/www/planning-back/vendor/codeception/codeception/src/Codeception/SuiteManager.php:154
/home/velaro/.config/composer/vendor/codeception/codeception/src/Codeception/Codecept.php:183
/home/velaro/.config/composer/vendor/codeception/codeception/src/Codeception/Codecept.php:152
/home/velaro/.config/composer/vendor/codeception/codeception/src/Codeception/Command/Run.php:282
/home/velaro/.config/composer/vendor/symfony/console/Command/Command.php:255
/home/velaro/.config/composer/vendor/symfony/console/Application.php:829
/home/velaro/.config/composer/vendor/symfony/console/Application.php:191
/home/velaro/.config/composer/vendor/symfony/console/Application.php:122
/home/velaro/.config/composer/vendor/codeception/codeception/src/Codeception/Application.php:103
/home/velaro/.config/composer/vendor/codeception/codeception/codecept:34

共有1个答案

郎宏逸
2023-03-14

Codeception识别trait的方法,比如测试(它搜索Cest-类的所有公共方法,包括trait的方法并运行它)。您应该将trait提取到另一个类FixtureLoader,并将其包含到Cest文件中。

class FixtureLoader
{
    use \yii\test\FixtureTrait;

    public $fixtures;

    public function fixtures()
    {
        return $this->fixtures;
    }
}

abstract class ApiCest
{
    /**
     * @var FixtureLoader
     */
    protected $fixtureLoader;

    public function __construct()
    {
        $this->fixtureLoader = new FixtureLoader();
    }

    protected function fixtures()
    {
        return [];
    }

    public function _before(\FunctionalTester $I)
    {
        $this->fixtureLoader->fixtures = $this->fixtures();
        $this->fixtureLoader->loadFixtures();
    }

    public function _after(\FunctionalTester $I)
    {
        $this->fixtureLoader->unloadFixtures();
    }
}


class UserCest extends ApiCest
{
    protected function fixtures()
    {
        return [
            'users' => UserFixture::className(),
        ];
    }

    public function testSomething(\FunctionalTester $I)
    {
        $I->sendGET('/user');
        $I->seeResponseCodeIs(200);
    }
}
 类似资料:
  • 我正在用Codeception Laravel 5开发一个验收测试。 我在文档中看到模块Laravel 5不应该用于验收测试。 现在,我想使用如下函数:Auth::xxx,factory(User::class)- 我可以在我的函数测试中使用它们,因为我包括了Laravel 5模块。 这是否意味着我将不能在验收测试中使用它们,或者有一个技巧可以做到这一点???

  • 我试图用codeception运行一些测试,当我尝试测试表单时,总是失败,我不知道为什么。和其他人一样,他们都通过了。测试代码如下: 当我用命令运行测试时/vendor/bin/run-vvv--html--debug我有以下日志: 接受。一套yml就是这个: 演员:验收员 模块: 什么是错的?我想要的是测试表格,看看下一页写的假期,为什么一些测试通过了,一个简单的表格没有?。你能帮我个忙吗?

  • 问题内容: 我想用python写一个League Fixture生成器,但是我做不到。详细信息如下: 有动态的团队列表,例如。如何从团队列表中生成一个fix_weekx列表?例如: 任何想法? 问题答案: 夹具调度是一个众所周知的问题。这是算法的python实现,网址为:http : //en.wikipedia.org/wiki/Round- robin_tournament 生成输出:

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

  • 主要内容:验收测试背后的原因,执行验收测试的步骤,验收测试中使用的工具,验收测试的优点,验收测试的缺点验收测试是基于用户要求和功能处理的正式测试。它确定软件是否符合指定的要求和用户要求。它是作为一种黑盒测试进行的,其中涉及测试系统接受程度所需的用户数量。这是软件测试的第四级和最后一级。 但是,该软件已通过三个测试级别(单元测试,集成测试,系统测试)但仍有一些小错误,当最终用户在实际场景中使用系统时,可以识别这些错误。 验收测试是对先前完成的所有测试过程的挤压。 验收测试背后的原因 当软件经历了单

  • 验收测试从用户角度验证场景。 测试的应用程序可以通过 PhpBrowser 或者 真正的浏览器。 在这两种情况下,浏览器都通过 HTTP 进行通信,因此应用程序应通过Web服务器提供。 验证测试是在 Codeception 框架的帮助下实现的,该框架有一个很好的文档: Codeception for Yii framework Codeception Acceptance Tests 运行基本和高