Чтобы ответить на ваш вопрос напрямую - нет, я не верю, что и то, и другое при правильном использовании является анти-паттерном.
--- Более подробный ответ ---
Исходя из моего опыта, я думаю, что это сильно зависит от цели вашего теста. Вот эмпирическое правило, которое я использовал в прошлом, и оно помогло мне решить:
Вы на самом деле тестируете небольшой блок кода? (Истинный юнит тест)
Если да, то я обнаружил, что гораздо проще создать данные внутри самого теста именно потому, что я вижу, что передается. В этих случаях я обычно ищу библиотеку, подобную Jasmine, потому что я нахожу, что это облегчает создание и ведение тестовых данных. Хотя это личное предпочтение - используйте все, что облегчает вашу работу.
Если нет, то вы, вероятно, на самом деле тестируете саму систему. В этих случаях я часто загружаю данные из внешнего источника по следующим причинам:
- Этот тест не для ясности кода для программистов (хотя это все еще важно - кто-то должен это поддерживать), а для прохождения достаточного количества различных типов данных через весь блок системы, чтобы быть уверенным, что он работает.
- Часто я пишу код для загрузки и использования тестовых данных, но сами данные создаются кем-то другим (обычно в моем случае сотрудником QA). Эти люди обычно не программисты, поэтому я не могу ожидать, что они будут редактировать код.
Поэтому длинный ответ короткий, это зависит от того, что вы тестируете и почему. Оба подхода полезны и имеют свое место - выберите, что лучше всего подходит для вашей ситуации.