Size: a a a

NestJS — русскоязычное сообщество

2020 March 03

OR

Oleg R. in NestJS — русскоязычное сообщество
@bowzee жирный лайк за наводку 👍
источник

Ti

Time is the side effect in NestJS — русскоязычное сообщество
Dilame Bowzee
Ты не должен тестировать абстрактный класс, потому что он по своей природе не должен иметь инстансов, так как реализация в нём не закончена.
Если у тебя законченная реализация, значит это не абстрактный класс
Ну звучит-то оно правильно, но иногда было бы не лишним протестировать то что есть, чтобы убрать часть обязанностей с тестов производных сущностей
источник

Ti

Time is the side effect in NestJS — русскоязычное сообщество
По такой логике можно дойти до того, что надо тестировать лишь внешнее апи, но это конечно же плохо
источник

DB

Dilame Bowzee in NestJS — русскоязычное сообщество
Time is the side effect
Ну звучит-то оно правильно, но иногда было бы не лишним протестировать то что есть, чтобы убрать часть обязанностей с тестов производных сущностей
Да здесь лакмусовая бумажка такая - есть ты уберёшь слово abstract перед class, создашь инстанс и он будет работать - то тебе не нужен абстрактный класс. Из этого следует что абстрактный класс по своей природе не тестируемый. Но это не плохо :)
источник

Ti

Time is the side effect in NestJS — русскоязычное сообщество
Dilame Bowzee
Да здесь лакмусовая бумажка такая - есть ты уберёшь слово abstract перед class, создашь инстанс и он будет работать - то тебе не нужен абстрактный класс. Из этого следует что абстрактный класс по своей природе не тестируемый. Но это не плохо :)
Ну у меня было так обычно:

Сначала сделал абстрактный класс, все хорошо по семантике

Потом написал часть реализации, понял что надо бы протестить

Понял что можно без абстрактного класса, убрал и все завелось
источник

Ti

Time is the side effect in NestJS — русскоязычное сообщество
Так и не получилось случая где не убирал в итоге)
источник

DB

Dilame Bowzee in NestJS — русскоязычное сообщество
Time is the side effect
Ну у меня было так обычно:

Сначала сделал абстрактный класс, все хорошо по семантике

Потом написал часть реализации, понял что надо бы протестить

Понял что можно без абстрактного класса, убрал и все завелось
Ну значит он и не нужен был)

У меня есть хороший пример для абстрактного класса - запрос с пагинацией (лента).

Есть абстрактный класс ленты, который добавляет функционал пагинации, но он не знает по каким урлам надо ходить. Все его потомки расширяют его, имплементируя непосредственно http запрос.

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

Для тестирования можно экстендить его и делать фейковый http запрос
источник

DB

Dilame Bowzee in NestJS — русскоязычное сообщество
Oleg R.
неплохое замечание, не знал что можно имплементить абстрактный класс, пример: https://www.typescriptlang.org/play/?ssl=5&ssc=8&pln=5&pc=7#code/IYIwzgLgTsDGEAJYBthjAgggg3g0kM8CAZgPZkAUAlAFwIBuZAlgCYIC+AUFwdHIhRoMAIVz5w-YiGBQa9AHYBXALYgAplE48h6BAGEEzFQAdk6leoUQMmADQIxeclWriOCGXLd4o6iEpQCggADJzaQA

но все равно как по мне это неверное использование абстрактного класса как интерфейса
>но все равно как по мне это неверное использование абстрактного класса как интерфейса

Ну вообще если сравнивать абстрактный класс с интерфейсом по кол-ву функций, то абстрактный класс это суперсет интерфеса :) Прям как TypeScript по отношению к JavaScript.
У каждого языка есть свои особенности, у TypeScript тоже, поэтому можно рассматривать использование абстрактного класса не как неправильное, а как особенное :)))))
источник

Ti

Time is the side effect in NestJS — русскоязычное сообщество
Dilame Bowzee
Ну значит он и не нужен был)

У меня есть хороший пример для абстрактного класса - запрос с пагинацией (лента).

Есть абстрактный класс ленты, который добавляет функционал пагинации, но он не знает по каким урлам надо ходить. Все его потомки расширяют его, имплементируя непосредственно http запрос.

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

Для тестирования можно экстендить его и делать фейковый http запрос
Ну примерно так и представлял, но не хватало примера)
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
Привет
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
Как в nestjs можно сконфигурировать, чтобы только 1 процесс запускался на сервере?
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
т е чтобы нода не поднимала процессов по числу cores и все singlecore работало
источник

AK

Alexander Kazantsev in NestJS — русскоязычное сообщество
Igor Gulamov
Как в nestjs можно сконфигурировать, чтобы только 1 процесс запускался на сервере?
а как ты зпускаешь на сервере?
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
`node dist/main.js`
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
источник

AK

Alexander Kazantsev in NestJS — русскоязычное сообщество
Igor Gulamov
`node dist/main.js`
у тебя что-то другое уже запустило ноды. либо ты используешь кластер внутри своего приложения
источник

AK

Alexander Kazantsev in NestJS — русскоязычное сообщество
убей все процессы и попробуй еще раз
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
запускается только 1 нода
источник

IG

Igor Gulamov in NestJS — русскоязычное сообщество
остальные ноды запускает nest
источник

AB

Aleksandr Bukhalo in NestJS — русскоязычное сообщество
Igor Gulamov
остальные ноды запускает nest
не запускает
источник