jvmchat | Unsorted

Telegram-канал jvmchat - pro.jvm

5916

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез

Subscribe to a channel

pro.jvm

Возможно, просто еще одна из причин использовать интерфейсы

Читать полностью…

pro.jvm

экономия на спичках, не?

спринг не компилирует -> разница будет для раздутых приложений как оптимизация скорости старта и, может быть, перегруженных сценариев, но и только

Читать полностью…

pro.jvm

Это практика для начинающих разработчиков в основном, так проще выделить контракт. Если ты можешь сразу писать сервис, понимая, что нужно минимизировать связность в приложении, такой подход не нужен

Читать полностью…

pro.jvm

объект какого типа вернёт Mockito.mock?

Читать полностью…

pro.jvm

Ну а как ещё воссоздавать конкретные ответы от зависимости, кроме как через when then?

Читать полностью…

pro.jvm

че реакции понаставили. Интересно услышать вашу точку зрения

Читать полностью…

pro.jvm

Не лезь 🤷
Ты сейчас у себя в голове какие-то аргументы придумал, никого в них не посвятил
И пытаешься общаться

Читать полностью…

pro.jvm

Зачем мне лезть в апи для написания тестов?

Читать полностью…

pro.jvm

A -> B -> C, где циклы?

Читать полностью…

pro.jvm

И как это помешает? Рефакторинг с выделением интерфейса идея сама прекрасно сделает

Читать полностью…

pro.jvm

надо реализацию не?, смысла в Mockito.when(<service>.<method>).thenReturn() нет

Читать полностью…

pro.jvm

ну появится вторая, тогда можно рефакторнуть, сильно работы не увеличится

Читать полностью…

pro.jvm

наверн в компании просто платят за количество интерфейсов в коде🤷‍♂️

Читать полностью…

pro.jvm

Вы что тестируете: контракт или каждую отдельную его реализацию?

Читать полностью…

pro.jvm

Создайте свой абстрактный класс, который будет передавать в предка уже заготовленные параметры, при наследовании от него передавать их снова уже не потребуется

Читать полностью…

pro.jvm

Так, условно, если у тебя зависимость UsersService, то ты ему можешь этот мок присвоить? Или тип всё же другой?

Читать полностью…

pro.jvm

Кроме того, что выше написали про контракты и тестирование:

- если использовать интерфейсы, Spring для создания прокси сможет применять Dynamic Proxy, встроенную в Java, тогда код будет легче и производительнее.

- если делать классы, Spring переключается на CGLIB, который сложнее, требует больше ресурсов и внешнюю либу. При этом CGLIB не работает с final-классами, для которых запрещено наследование.

Так что использование интерфейсов помогает Spring работать более оптимально.

Читать полностью…

pro.jvm

public static <T> T mock(Class<T> classToMock)

Читать полностью…

pro.jvm

Есть понятие "Testability", оно подразумевает что когда пишем код нужно думать о том как его будем тестировать.

Читать полностью…

pro.jvm

Если вы это мокаете, значит это вы не тестируете, значит это заменяется заглушкой. А раз оно не являетя объектом тестирования - то откуда взялся вопрос про реализации? Странно.

Читать полностью…

pro.jvm

@UnknownNightElf

Читать полностью…

pro.jvm

Что если это апи внешнее?

Читать полностью…

pro.jvm

От кого в твоем случае зависит C

Читать полностью…

pro.jvm

А это уже циклические зависимости

Читать полностью…

pro.jvm

Если только стопицот зависимых друг от друга сервисов к тому моменту не появятся...

Читать полностью…

pro.jvm

а в тестах замокать сервис можно используя Mockito

Читать полностью…

pro.jvm

не понимаю зачем сразу выделять интерфейс, если имплементация будет скорее всего одна

Читать полностью…

pro.jvm

Это базовые знания ООП. Неважно, это ваш код или Minecraft, или другой библиотеки. Вы просто создайте абстрактную реализацию самого Block.

public abstract class DefaultBlock extends Block {
public DefaultBlock() {
super(...);
}

// TODO: ...
}

Читать полностью…

pro.jvm

Если речь идёт о том, чтобы Block реализовывал абстрактный класс AbstractBlock, то такой вариант недопустим, так как класс Block является частью кода библиотеки, на основе которой я пишу свой проект.

Читать полностью…

pro.jvm

Если интерфейс нужен для тестирования, то получается , что это размазывание тестовой инфраструктуры по всему приложению 🧐

Читать полностью…
Subscribe to a channel