Я предлагаю упростить ваш контрольный пример - реорганизовать ваш метод.
Каждый раз, когда у меня возникают проблемы с тестированием метода, для меня это запах кода, и я спрашиваю, почему это сложно протестировать. И если код трудно тестировать, его, вероятно, сложно использовать и поддерживать.
В данном случае это потому, что у вас есть цепочка методов, которая проходит на несколько уровней. Возможно, передайте в качестве параметров ctx, cacheEnable и cacheExpire.