Обычно базовый класс зависит от другого класса, не обязательно для кэширования, но для "присмотра за XYZ для меня".Сотрудничающий класс просто действует как хранилище.Тестируемый класс не должен знать или заботиться о том, что другие классы кэшируются - в противном случае у вас есть связывание там, которое вам, вероятно, не нужно.
Затем вы использовали бы интерфейс для выражения этого.Я обычно называю мой «ILookAfterXYZ» - я считаю, что этот шаблон именования действительно помогает мне понять, что мне помогает мой класс для совместной работы, - и высмеиваю это.
Кэширование - это проблема производительности, а неповеденческий.Я пришел к этому вопросу, потому что он помечен как «BDD», но я бы не стал использовать тесты в стиле BDD ни на единичном, ни на системном уровне, чтобы определить полезность таких вещей, как кэширование.Вместо этого пишите тесты производительности и используйте их, чтобы проверить, работает ли кэширование.