Страница 1 из 1

Fixtures for ::findOne

Добавлено: 2019.08.29, 10:43
Chelobaka
Здравствуйте,

Тестирую авторизацию. Но модель лезет в базу, а не fixture. Вопрос так и должно быть, статические методы не создают обьект и поэтому не фикстура?
Какой код для поиска юзера можно было бы использовать что бы была возможность использовать фикстуру, спасибо.


Есть такая строка :

Код: Выделить всё


$user = User::findOne(['email' => $email, 'status' => User::STATUS_ACTIVE]);

В тесте так:

Код: Выделить всё

class LoginCest
{
    public function _fixtures()
    {
        return [
            'user' => [
                'class' => UserFixture::className(),
                'dataFile' => codecept_data_dir() . 'user.php',
            ],
        ];
    }
    
    ....
    
    public function checkLoginAction(AcceptanceTester $I)
    {
        $I->amOnPage(Url::toRoute('/login'));
        $I->fillField('LoginForm[email]', 'email@email.info');
        $I->fillField('LoginForm[password]', 'Test1234');
        $I->click('Login');
        $I->wait(5);
        $I->see('email@email.info');
        $I->seeLink('Logout');
    }


Re: Fixtures for ::findOne

Добавлено: 2019.08.29, 11:32
ElisDN
Фикстура перед тестом записывается в базу и потом findOne через Yii::$app->db лезет в базу. Так и есть.

Re: Fixtures for ::findOne

Добавлено: 2019.08.29, 11:55
Chelobaka
ElisDN писал(а): 2019.08.29, 11:32 Фикстура перед тестом записывается в базу и потом findOne через Yii::$app->db лезет в базу. Так и есть.
Спасибо за ваш ответ. Но не совсем понял. Получается что у меня какой-то конфлик конфигов? Потому как:
Когда я делаю вывод из базы всех записей то я вижу рабочую базу, а не тестовую.
В test-local есть конфиг на базу:

Код: Выделить всё

return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=xxxxxx',
            'username' => 'root',
            'password' => 'xxxxxxx',
            'charset' => 'utf8',
        ],
    ]
];

Re: Fixtures for ::findOne

Добавлено: 2019.08.29, 11:59
Chelobaka
Да, проблема была именно в конфигах. После отключения всё стало на свои места.

Код: Выделить всё

$config = yii\helpers\ArrayHelper::merge(
//    require __DIR__ . '/../../common/config/main.php',
//    require __DIR__ . '/../../common/config/main-local.php',
    require __DIR__ . '/../../common/config/test.php',
    require __DIR__ . '/../../common/config/test-local.php',
//    require __DIR__ . '/../config/main.php',
//    require __DIR__ . '/../config/main-local.php',
    require __DIR__ . '/../config/test.php',
    require __DIR__ . '/../config/test-local.php'
);