Идея состоит в том, что вы вообще не тестируете приватное (промежуточное) значение, потому что оно не важно внешне (именно поэтому вы мудро держите его в секрете.) Закрытое значение представляет собой некоторое состояние в вашем объекте, которое вы установилитеперь с намерением, что это повлияет на будущие вызовы к вашему общедоступному интерфейсу, верно?Так что поменяйте один тест, чтобы сделать два звонка.Пусть первый вызов сделает все, что ему нужно, чтобы установить состояние так, как вы думаете, а затем сделайте второй вызов и увидите, что он получился таким, каким вы ожидаете, когда эта переменная установлена.Если он действительно закрытый, для модульного теста не имеет значения, какова его ценность - только то, что он правильно дает желаемые результаты в нужное время.Но это предложение сопровождается предупреждением: оно проникает в ту область, где вы можете попросить, чтобы юнит-тест выполнил нечто большее, чем тестирование юнитом.
Еще одно наблюдение: вы говорите, что ваш метод «не может быть разделен», но не предлагаете объяснения, почему.Если вы не можете изменить дизайн, это больше похоже на то, что вы пытаетесь втиснуть модульный тест в унаследованный код, а не выполнять тестовую разработку.Это совершенно нормально, вам не нужно отказываться от TDD, но, возможно, есть и другие подходы, которые следует учитывать.После того, как вы пройдете тестирование, в TDD это часть, где вы должны немного реорганизовать метод.Тот факт, что вы говорите о промежуточном значении, говорит о том, что ваш метод несет слишком большую ответственность.Попробуйте использовать метод извлечения для инкапсуляции более кратких частей функциональности в меньшие, тестируемые методы обслуживания.
Если это не то, что вы пытаетесь выполнить, возможно, тестирование, которое вы пытаетесь выполнить, кажется «слишком большим».Возможно, тестирование, которое вы пытаетесь сделать, это скорее приемочный тест.Опять же, это нормально, и приемочные тесты тоже очень важны, но это уже не единичный тест.