Vladislav
или есть поле, которое есть в базе, но нет в рулезах?
Pavel
https://pastebin.com/8aYukSrD
Если код у теб в точности такой, то все должно работать. Если нет и beforeSave имеет отличные значения - проблема в нем. И как справедливо заметил M K, если запись не сохранилась в БД в принципе, то косяк при вализации
Vladislav
сделай в мускле show create table user_accounts_fields;
Vladislav
и вылей сюда
Vladislav
или любой другой способ
Oleg
отбой, ступил в саблайме через rmate сессия отвалилась дело было в parent::beforeSave($insert)
Oleg
😃
Vladislav
Vladislav
Oleg
всем спасибо за помощь! 👍 😃
Vladislav
напереопределялся =)
mr.
mr.
Но я вам их не дам 😀
mr.
Как обычно начнётся срач)
Oleg
будет весело :)
mr.
Блин, когда начинаю в проекте писать RAW запросы сложные - понимаю, что дальше будет ппц)
mr.
Негативный опыт)
i_vovolk
вот у меня сечас задача с запросом на 350+ строк. Это можно считать сложным?
Pavel
Не всегда plain-sql - зло. имхо
who are you
Привет
Эд
вот у меня сечас задача с запросом на 350+ строк. Это можно считать сложным?
Смотря каким способом получать их, сам объем данных не болтше
Эд
Не больше
Olga
привет! как мокать в функциональных тестах? тест типа $I = new FunctionalTester($scenario); $I->wantTo('check login a new user'); $email = 'test@email.com'; $I->sendPOST('users', [ 'email' => $email, 'password' => '123456', ]); $I->canSeeResponseContainsJson(['email' => $email]); например, внутри регистрации у меня дергается сторонний сервис (внешнее API), я не хочу, чтобы при каждом прогоне тестов дергалось внешнее апи, а отдавало какой-то мок
Vladislav
напиши json ответа и сунь в файл
who are you
Крутое платье 👗
Vladislav
во время sendPOST дергается апи?
Vladislav
если да,то тебе надо сендПОСТ абстрагировать
Vladislav
вернее интерфейс подключения к апи абстрагировать
Vladislav
и передавать в конструктор или типа того
Vladislav
и для тестов создать фейковый интерфейс
Olga
во время sendPOST дергается апи?
ну да, во время регистрации, например загружаем данные куда-то. в регистрации вызывает какой-нибудь UserDataService и внутри льем на стронее апи
Vladislav
который будет отдавать мок
Vladislav
оторви сам запрос к апи от sendPOST
Vladislav
и передавай его в сендПОСТ при запросе или при конструкторе
Vladislav
as u wish
Vladislav
остальнео выше описал
Vladislav
типа напиши класс APIRequest
Vladislav
с методом request
Vladislav
ипа того
Vladislav
и этот метод реквест возвращает данные
Vladislav
после, перед запросом sendPOST создаешь экземпляр APIRequest
Olga
так можно сделать, если делать типа через unit тесты, можно даже сам сервис замокать ($this->createMock там) , передать его как зависимость и все ок. но это тогда не тот вид тестов, который я хочу сейчас реализовать
Vladislav
и пердаешь его sendPOSTу
Vladislav
ааа
Vladislav
так тебе костыль нужен
Vladislav
а не как надо)
Vladislav
ничего кроме хардкоджинга внутри sendPOST не могу придумать
Olga
да почему костыль, я хочу понять как правильно
Vladislav
правильно подключать запрос к стороннему апи через dependency uinjection\
Vladislav
или через set
Vladislav
чтоб потом тестить можно было
Vladislav
иначе хардкод внтури метода
Vladislav
типа, если передали параметр isTest, то не делаем запрос
Vladislav
а возвращаем данные сразу
Olga
получается, что вообще нет возможности изолированно протестировать, через такой синтаксис $I = new FunctionalTester($scenario); $I->wantTo('check login a new user'); $I->sendPOST... если у меня есть хотя бы одна стороняя зависимость? ээээ ну странно же это
Olga
я не очень разобралась в фикстурах, нельзя их как-то запользовать для мока сервиса?
Vladislav
Можно, но архитектура заранее даолжна поддерживать абсрагированность от реальности
Vladislav
а сейчас у тебя sendPOST полностью завязан на внешнем АПИ
Vladislav
именно внутрях
Vladislav
а повлиять на метод из теста нельзя никак по определению
Olga
поняла, т.е. типа если я хочу, чтобы это дело сработало. мне надо как-то методу сообщить, что это вообще-то тест. например, посмотрев YII_ENV мне это не очень нравится, конечно. я думала, что может можно подменить класс
Vladislav
подменить класс через dependency injection как раз таки можно
Vladislav
на проде передается класс реального запроса
Vladislav
на тестах тобой сгенеренный
Vladislav
лол, 404 участника группы
Владислав
:)
Владислав
срочно исправить!
Olga
подменить класс через dependency injection как раз таки можно
слушай, я поняла как это сделать без костылей. спасибо!
Vladislav
расскажи
Vladislav
или ты все-таки депенденси инжекшн
Olga
расскажи
да, через Dependency Injection Container. у меня этот сервис зарегистрирован как компонент в общем конфиге main.php (поэтому в любом случае, при реальном запуске и тестах, он всегда используется). я сейчас зарегистрирует реальный сервис в реальный конфиг (main-local.php), а мок подключу через тестовый конфиг (test-local.php)
Vladislav
👍
mr.
А я в тесты не умею и мне стыдно от этого сейчас(((
Vladislav
ничего сложного же
mr.
Как и с вёрсткой, ага. Только с BS3 могу что-то наковырять)))
mr.
https://explain.depesz.com/s/Ayu
mr.
ЖИЗНЬ БОЛЬ
mr.
Запрос-то написал, но вот он ппц тормоз