引用yii2/codeception数据文件中的fixture记录

And*_*rey 10 php fixtures yii2 codeception

有没有办法在Yii2/Codeception ActiveFixture中的夹具数据文件中指定另一个夹具的相关行?考虑这个用户/配置文件关系的示例:

user.php的:

return [
    'user1' => [
        'email' => 'user1@example.net',
     ]
];
Run Code Online (Sandbox Code Playgroud)

profile.php:

use common\models\User;
return [
    'profile1' => [
        'user_id' => User::findOne(['email' => 'user1@example.net'])->id;
        'name' => 'My Name',
     ]
];
Run Code Online (Sandbox Code Playgroud)

该文档指出"您可以为行添加别名,以便在测试后期,您可以通过别名引用该行." 有没有办法在另一个灯具内引用行?例如,在profile.php中使用类似$ this-> user('user1') - > id的内容?关于如何做到,我找不到任何提及.你如何创造这种相关的装置?

Hon*_*ong 5

在执行方法后,别名数据只能Fixture通过其data属性在专用对象的范围内访问load().使这个数据可以从另一个Fixture对象的数据文件访问的唯一方法是将其注册到某个全局对象,例如Applicationobject.

我通常只是在构造依赖数据集之前查询所有需要的数据:

use common\models\User;
$users = User::find()->indexBy('email')->all();
return [
    'profile1' => [
        'user_id' => $users['user1@example.net']->id,
        'name' => 'My Name',
     ]
];
Run Code Online (Sandbox Code Playgroud)