You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
namespace app\tests\fixtures;
use yii\test\ActiveFixture;
class UserProfileFixture extends ActiveFixture
{
public $modelClass = 'app\models\UserProfile';
public $depends = [**'user'** => 'app\tests\fixtures\UserFixture'];
}
and add these lines to yii2/test/FixtureTrait.php:
index cd4bd1431..6a82bec3c 100644
--- a/test/FixtureTrait.php
+++ b/test/FixtureTrait.php
@@ -205,11 +205,14 @@ trait FixtureTrait
if (!isset($instances[$name])) {
$instances[$name] = false;
$stack[] = $fixture = Yii::createObject($fixture);
- foreach ($fixture->depends as $dep) {
- // need to use the configuration provided in test case
- $stack[] = isset($config[$dep]) ? $config[$dep] : ['class' => $dep];
- }
- }
+ foreach ($fixture->depends as $alias => $dep) {
+ if( is_string($alias) ) {
+ $aliases[$dep] = $alias;
+ }
+ // need to use the configuration provided in test case
+ $stack[] = isset($config[$dep]) ? $config[$dep] : ['class' => $dep];
+ }
+ }
// if the fixture is already loaded (ie. a circular dependency or if two fixtures depend on the same fixture) just skip it.
Then I can do
$user = $I->grabFixture('user', 'user1');
By the way, the manual page Testing: fixtures, is misleading as is creating a UserProfileFixture that ends up using the user.php file with user data instead of using a userprofile.php data file with user profile data.
Additional info
Q
A
Yii version
Yii2.0.48-dev
The text was updated successfully, but these errors were encountered:
santilin
pushed a commit
to santilin/yii2
that referenced
this issue
Apr 13, 2023
What steps will reproduce the problem?
Following example in Testing: fixtures,
I can do:
$profile = $I->grabFixture('profiles', 'user1');
But I can not grab a user which is dependent on profileuser:
$user = $I->grabFixture('user', 'user1');
because I get the error "User fixture not loaded".
To grab a user fixture, I have to do:
$user = $I->grabFixture('tests\fixtures\UserFixture', 'user1');
Which is cumbersome.
If I define dependent fixtures with an alias:
and add these lines to
yii2/test/FixtureTrait.php
:Then I can do
$user = $I->grabFixture('user', 'user1');
By the way, the manual page Testing: fixtures, is misleading as is creating a UserProfileFixture that ends up using the
user.php
file with user data instead of using auserprofile.php
data file with user profile data.Additional info
The text was updated successfully, but these errors were encountered: