资讯专栏INFORMATION COLUMN

codeception (7) 危险的Yii2-codeception

ZHAO_ / 2486人阅读

摘要:前言忽然想起之前用时让我胆战心惊的那刻,那天我在测试服务器上研究着,忽然同事大叫,怎么用户表被清空了,我当时觉得跟自己没关,但想起我今天刚把的配置更改了,链接到了测试数据库上,并且运行过里面自带的登陆案例,但运行结果是失败的,我觉得很有可能

前言

忽然想起之前用codecetion时让我胆战心惊的那刻,那天我在测试服务器上研究着codeception,忽然同事大叫,怎么用户表被清空了,我当时觉得跟自己没关,但想起我今天刚把codeception的config配置更改了,链接到了测试数据库上,并且运行过里面自带的登陆案例,但运行结果是失败的,我觉得很有可能是我捅的篓子,所以我就开始找代码,结果真的是我干的。

怎么找到的

用户表只剩一条数据,就是运行codeception时加的,我根据里面的数据找到了存放数据的文件

testscodeceptioncommonunitfixturesdatamodelsuser.php

    return [
        [
            "username" => "bayer.hudson",
            "auth_key" => "HP187Mvq7Mmm3CTU80dLkGmni_FUH_lR",
            //password_0
            "password_hash" => "$2y$13$EjaPFBnZOQsHdGuHI.xvhuDp1fHpo8hKRSk6yshqa9c5EG8s3C3lO",
            "password_reset_token" => "ExzkCOaYc1L8IOBs4wdTGGbgNiG3Wz1I_1402312317",
            "created_at" => "1402312317",
            "updated_at" => "1402312317",
            "email" => "nicole.paucek@schultz.info",
        ],
    ];
怎么解决的

注释掉这个方法中的数据

namespace testscodeceptionfrontendunitmodels;
class SignupFormTest extends DbTestCase
{
public function fixtures()
    {
        return [
            /*"user" => [
                "class" => UserFixture::className(),
                "dataFile" => "@tests/codeception/frontend/unit/fixtures/data/models/user.php",
            ],*/
        ];
    }
}

重新运行了了一下单元测试SignupFormTest ,这次数据没有被删除掉

危险原因

我研究了一下被删除的原因,找到了框架底层的代码

namespace yii	est;
class ActiveFixture extends BaseActiveFixture
{
  public function load()
  {
    $this->resetTable();
    $this->data = [];
    $table = $this->getTableSchema();
    foreach ($this->getData() as $alias => $row) {
        $primaryKeys = $this->db->schema->insert($table->fullName, $row);
        $this->data[$alias] = array_merge($row, $primaryKeys);
    }
  }
  protected function resetTable()
  {
    $table = $this->getTableSchema();
    $this->db->createCommand()->delete($table->fullName)->execute();
    if ($table->sequenceName !== null) {
        $this->db->createCommand()->resetSequence($table->fullName, 1)->execute();
    }
  }
}

就是这个resetTable方法把数据给清空了,所以大家还是慎重使用Fixture,虽然是测试服务器,但是里面的数据也是非常重要的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30528.html

相关文章

  • YII2.0 codeception 一点经验

    摘要:测试驱动的安装我就不写了,这里有详细说明。然后在命令提示符里执行命令重构一下记住测试驱动里代码发生改变都需要重构一下不然会报错。在执行命令进行测试执行了个测试驱动个断言全部成功以上只是我的一些经验代码不一定对希望对大家有帮助 测试驱动 codeception 的安装我就不写了,http://www.kkh86.com/it/codec... 这里有详细说明。 我就说一下我的测试。 首先...

    chaosx110 评论0 收藏0
  • 使用Codeception进行Yii2单元测试(一)安装以及简介篇

    摘要:一简介作为工程师,我们很可能遇到一些有必要的进行单元测试的场景。本系列文章就来介绍下,在框架下,如何使用进行单元测试。 一、简介 作为php工程师,我们很可能遇到一些有必要的进行单元测试的场景。本系列文章就来介绍下,在Yii2框架下,如何使用Codeception进行单元测试。本篇就首先介绍Yii2,以及Codeception的安装。 二、Yii2和codeception安装 安装Yi...

    dabai 评论0 收藏0
  • codeception (6) Yii2中安装codeception时遇到问题及解决方法

    摘要:版本这个原因是因为禁用了函数,所以我们需要更改找到的配置文件输入命令会出现两个相关的地址配置文件在中找到,打开之后搜索将去掉,保存处理这个问题有两种方式,第一种是修改在中加上,应该是禁用的意思还有一种方式就是将升级到以上,这个错误就不会出现 codeception版本 v2.1.8 shell_exec PHP Warning: shell_exec() has been disabl...

    Lionad-Morotar 评论0 收藏0
  • Yii修行之路 - Extension 扩展

    摘要:运行来安装指定的扩展。这更便于用户辨别是否是的扩展。当用户运行安装一个扩展时,文件会被自动更新使之包含新扩展的信息。上述代码表明该扩展依赖于包。例如,上述的条目声明将对应于别名。为达到这个目的,你应当在公开发布前做测试。 简述 扩展是专门设计的在 Yii 应用中随时可拿来使用的, 并可重发布的软件包。 基础 例如, yiisoft/yii2-debug 扩展在你的应用的每个页面底部添加...

    bovenson 评论0 收藏0
  • codeception (5)Yii2下测试ajax

    摘要:属于验收测试返回我测试的这个必须要先登录切换到配置站点登录断言可以在这个页面里看到指定的文字用户名密码登录退出登录登录成功后跳转到目标页面添加客户填写参数的情况下代表成功参数为空的情况代表失败运行查 ajax属于验收测试返回我测试的这个ajax必须要先登录 use testscodeceptionfrontendAcceptanceTester; $I = new Acceptanc...

    willin 评论0 收藏0

发表评论

0条评论

ZHAO_

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<