Fixtures for ::findOne

Всё про тестирование в Yii 2.0
Ответить
Аватара пользователя
Chelobaka
Сообщения: 201
Зарегистрирован: 2018.06.01, 09:54

Fixtures for ::findOne

Сообщение Chelobaka » 2019.08.29, 10:43

Здравствуйте,

Тестирую авторизацию. Но модель лезет в базу, а не 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');
    }


Аватара пользователя
ElisDN
Сообщения: 5428
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Fixtures for ::findOne

Сообщение ElisDN » 2019.08.29, 11:32

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

Аватара пользователя
Chelobaka
Сообщения: 201
Зарегистрирован: 2018.06.01, 09:54

Re: Fixtures for ::findOne

Сообщение Chelobaka » 2019.08.29, 11:55

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',
        ],
    ]
];

Аватара пользователя
Chelobaka
Сообщения: 201
Зарегистрирован: 2018.06.01, 09:54

Re: Fixtures for ::findOne

Сообщение Chelobaka » 2019.08.29, 11:59

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

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

$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'
);


Ответить