Не работают запросы через AR и DAO

Всё про тестирование в Yii 2.0
Ответить
yujin1st
Сообщения: 171
Зарегистрирован: 2012.03.26, 12:03

Не работают запросы через AR и DAO

Сообщение yujin1st » 2017.05.12, 07:59

Здравствуйте, пишу тест на REST и столкнулся с такой проблемой:

Тестирую изменение данных, и в тесте отправляю два api-запроса - один на добавление записи, второй на ее изменение.
И не могу проверить через yii - возвращаются старые данные через ar, dao
При этом запросы не работают после изменения.

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

//  база чистая
$I->sendPOST(Url::to(['/api/register'],$data); // добавляем запись
$id =  $I->grabDataFromResponseByJsonPath('$.data.vaid')[0];
$record = Record::findOne($id); // здесь все нормально 


$I->sendPOST(Url::to(['/api/update/1'],$data2); // изменяем запись
$record = Record::findOne($id); // здесь старые данные 
Yii::$app->db->createCommand('SELECT * from  record WHERE status=0 ')->queryScalar()); // здесь данные старые
$I->grabFromDatabase('record','status',['id'=>1]) // это работает

Аватара пользователя
samdark
Администратор
Сообщения: 8542
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работают запросы через AR и DAO

Сообщение samdark » 2017.05.12, 11:54

Паузу добавьте попобуйте.

yujin1st
Сообщения: 171
Зарегистрирован: 2012.03.26, 12:03

Re: Не работают запросы через AR и DAO

Сообщение yujin1st » 2017.05.12, 14:36

Попробовал sleep(), 5-10 секунд - ничего не поменялось, а $I->wait недоступен, тест же функциональный, не приемочный.

Аватара пользователя
samdark
Администратор
Сообщения: 8542
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работают запросы через AR и DAO

Сообщение samdark » 2017.05.12, 15:13

А в базе реально что-то меняется?

yujin1st
Сообщения: 171
Зарегистрирован: 2012.03.26, 12:03

Re: Не работают запросы через AR и DAO

Сообщение yujin1st » 2017.05.12, 15:29

Да, если после теста я захожу через внешний инструмент (тот же шторм) - то там записи добавлены и изменены.

sosnovskiy
Сообщения: 239
Зарегистрирован: 2017.03.28, 20:03

Re: Не работают запросы через AR и DAO

Сообщение sosnovskiy » 2017.05.12, 16:25

yujin1st писал(а):
2017.05.12, 15:29
Да, если после теста я захожу через внешний инструмент (тот же шторм) - то там записи добавлены и изменены.
Может вы разные базы использете? В одну пишите и изменяете, а из другой читаете?
Это просто предположение...

yujin1st
Сообщения: 171
Зарегистрирован: 2012.03.26, 12:03

Re: Не работают запросы через AR и DAO

Сообщение yujin1st » 2017.05.12, 16:42

Нет, все точно в тестовой, делал разные проверки и при всех вариантах приходил к одному и тому же выводу обозначенному в вопросе:
- включал само приложение на тестовую базу и там данные отображались верные после запросов
- отключал запрос на добавление - падали первые запросы AR из-за отсутствия данных
- пробовал разные варианты с настройкой подключения в конфиге codecept - (обновление, дамп, откат)


Еще один момент: если я напрямую менял данные в базе (Model::updateAll(...)) в тесте без rest-запросов , то все последующие выборки срабатывали нормально.

Аватара пользователя
samdark
Администратор
Сообщения: 8542
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работают запросы через AR и DAO

Сообщение samdark » 2017.05.12, 23:06

Транзакции используются?

yujin1st
Сообщения: 171
Зарегистрирован: 2012.03.26, 12:03

Re: Не работают запросы через AR и DAO

Сообщение yujin1st » 2017.05.13, 03:06

Я не использую и не настраивал специально. Может codecept где-нибудь по умолчанию их включает?

yujin1st
Сообщения: 171
Зарегистрирован: 2012.03.26, 12:03

Re: Не работают запросы через AR и DAO

Сообщение yujin1st » 2017.05.19, 07:44

@samdark, вы все же были правы - были транзакции от yii модуля. Отключив (в конфиге cleanup: false), все заработало.
Вопрос в том, что все-таки это ошибка или так и должно быть?

1. открывается одна транзакзция
2. отправляется запрос - и мимо транзакции добавляются данные
3. в рамках транзакции читаются данные
4. отправляется запрос на изменение и он проходит мимо транзакции
5. пытаемся прочитать еще раз данные в рамках транзакции <<<< что здесь по факту происходит?


Ответить