@Quber имею в виду то, что можно использовать $cookieStore как минимум для того что бы в один прекрасный день избавиться от ngCookies и заменить на свою реализацию с тем же интерфейсом.
@Serhioromano я в принципе расписал что думаю. $timeout применять можно, иногда, и обычно можно его чем-то заменить. В директивах частенько использую setTimeout с нулевой задержкой просто что бы вклиниться в event loop после того как отработает js и reflow.
@StrangeAttractor если честно было бы неплохо просто увидеть приблизительный пример, а то это "промежуточное" это довольно расплывчато. Можете оформить? В любом случае все стороннее мокается и стабится.
@StrangeAttractor 100% покрытие кода тесами означает что в рамках тест кейсов выполняется каждая строчка кода, отрабатывает каждая ветвь if-ов и тд. Для большинства систем добиться этого не особо сложно, просто возможно это лишнее. Есть вещи которые в принципе нельзя покрыть тестами на 100%.
Что до вашего случая, скорее всего проблема с архитектурой. Если компонент сложно покрывать тестами, значит что-то пошло не так. Ну или покрывайте интегрционными.
@StrangeAttractor я учился по документации к phpunit + практика + смотреть чужие тесты. Так что именно по тестированию литературу не подскажу. У Кента Бэка неплохо расписано тестирование в контексте TDD и тамошнего цикла - тесты - код - рефакторинг. Вообще его "экстримальное программирование" стоит почитать.
Короче у вас есть блок с дыркой грубо говоря, который фиксирован относительно вьюпорта и занимает 100%x100% от его размера. В этом вот оверлее менюшки, контролы и т.д. А область с контентом, просто блок под высоту контента + паддинги сверху и синзу под размеры дырки (что бы "низ" блока влазил и "верх" тоже). И все. В итоге у вас скролится страница (блок с контентом), а оверлей с контролами остается на месте.
@VoidEx да что ж такое то... я что-то совсем не внимательный сегодня. Модифицировать его можно, в итоге все-равно имеем довольно простой рекурсивный алгоритм. Но конкретно этот сложно...