Я ухожу от КОММЕНТАРИЙ, чтобы получить больше места, даже если мой - просто открытый аргумент.Я надеюсь, что это приемлемо для SO.
Я хотел бы проверить, что компонент вызывает отмену подписки при каждой подписке
Я думаю, что это интересный случай дизайн теста .
Все мы знаем, что важно не оставлять подписки живыми, когда компонент уничтожен, и поэтому стоит подумать, как это проверить.
В то же время это можно рассматривать как подробность реализации , и это, безусловно, не относится к " общедоступному поведению ", которое компонент SW предоставляет через свойAPI-интерфейсы.И общедоступные API-интерфейсы должны быть в центре внимания тестов, если вы не хотите тесно связывать тесты и код, что препятствует рефакторингу.
Плюс AFAIK RxJS не предоставляет механизм для перечисления всех активных подписок в данный момент, поэтому задача поиска способа проверить это остается на нас.
Итак, если вы хотитечтобы достичь цели тестирования того, что все подписки отписаны, вам нужно принять конкретный дизайн, чтобы разрешить это, например, использовать массив, в котором вы храните все свои подписки, а затем проверить, все ли они закрыты.Это линия вашего SubscriptionHelper
.
Но даже это не обязательно ставит вас в безопасное место.Вы всегда можете создать новую подписку и не добавлять ее в массив, возможно, просто потому, что вы забыли сделать это в своем коде.
Таким образом, вы можете проверить это, только если вы придерживаетесь своей дисциплины кодирования , т.е. вы добавляете подписки в массив.Но это равносильно тому, что вы отмените подписку на все подписки методом ngOnDestroy
.Даже это дисциплина кодирования.
Итак, имеет ли смысл проводить такой тест, даже если конечная цель теста важна?Разве это не должно быть что-то, что можно получить с помощью обзора кода?
Очень любопытно прочитать мнения