Size: a a a

2021 April 27

АК

Александр Костырко... in Yii Framework 2
Всем привет) Был ли у кого-то опыт добавления unit тестов в Yii2 на проект, на котором из 10 лет жизни проекта только в последние пол года миграции появились и AR то толком нет. Как я сейчас понимаю надо писать все миграции и создавать модели, но может ещё какие-то варианты есть?
источник

КС

Константин Сурнин... in Yii Framework 2
Обычно в таком случае миграцию создают по импорту базы
источник

ES

Eugene She in Yii Framework 2
А как миграции к юнит тестам относятся?
источник

Д

Дмитрий in Yii Framework 2
видимо просто ни того ни другого нет)
источник

АК

Александр Костырко... in Yii Framework 2
Ну когда проходят тесты, они происходят на каких-то данных , которые накатаны миграциями и лежат в базе ну и фикстуры добавляются свои завязанные на AR модели
источник

A

A in Yii Framework 2
если я ставлю кеш из консоли, то веб версия не может удалить его 

yii2 basic, как это можно решить, подскажите, плес
источник

Д

Дмитрий in Yii Framework 2
права на папку 664 поставь.
источник

A

A in Yii Framework 2
на runtime/cache ?
источник

Д

Дмитрий in Yii Framework 2
данные миграциями не накатывают обычно. для тестов фикстура есть.
источник

ES

Eugene She in Yii Framework 2
Это уже интеграционные тесты.
Только миграции зачем все равно не понял - тестовую базу накатить?
источник

АК

Александр Костырко... in Yii Framework 2
Да)
источник

ES

Eugene She in Yii Framework 2
Да ну, проще написать код чтобы структуру таблиц переливал с одной базы в другую
источник

АК

Александр Костырко... in Yii Framework 2
Хорошо, спасибо)
источник

A

A in Yii Framework 2
не пашет чёт
источник

VV

Vladislav Varlamov in Yii Framework 2
Народ, подскажите по DI. Eсть такой пример

Есть модуль Книги, у книг есть Авторы. Где-то внутри модуля есть метод, который получает эти книги. Все классы конфигурируются через DI.

Сейчас появилась необходимость в конкретном контроллере подменить класс Авторы, которые будут брать данные из других источников, допустим по Api назовём его АвторЛитрес. Напрямую доступа к авторам из контроллера нет. Вся остальная логика 1 в 1.

Схема примерно такая

Контроллер -> Сервис -> Репозиторий -> Книги -> Авторы

Какой более правильный путь? Сейчас сделал в init контроллера
php
class BookLitres extend Controller {
   public function init()
   {
       parent::init();
       
       Yii::$container->set(Author::class, AuthorLitres::class);
   }
   
   public function actionBook(int $bookId, BookService $bookService)
   {
       $book = $bookService->getOne($bookId); // где-то там в глубине вытянется книга и её автор
       
       return [
           'book'=> $book->data,
           'author'=> $book->author->data, // просто для примера, что он там есть
       ]
   }
}
Но некоторые коллеги считают, что нужно явно прокинуть из контроллера всю цепочку зависимостей с нужным классом. Но, как по мне, смысл использовать контейнеры, если нельзя так подменять?!

* отсылки к литрес просто для примера
источник

Д

Дмитрий in Yii Framework 2
а в конфиге нельзя сразу указать реализацию Author?
источник

Д

Дмитрий in Yii Framework 2
или это только в этом контроллере нужна такая реализация?
источник

VV

Vladislav Varlamov in Yii Framework 2
только для этого контроллера, в остальных местах через конфиг используется класс Author для интерфейса AuthorInterface
источник

Д

Дмитрий in Yii Framework 2
ну вообще как-то неправильно ни так ни сяк.. подумать надо.
источник

ES

Eugene She in Yii Framework 2
Так вроде ж репозиторий должен этим заниматься разве нет ?
источник