По хорошему, в юнит тестах нужно использовать заглушки вместо других частей системы, которые вы не хотите сейчас тестировать. Эти заглушки нужно подсовывать в тестируемую модель либо через контейнер DI на этапе конфигурации тестового окружения, либо через явный метод в модели.
Пример:
В LoginForm можно выделить явную зависимость от чего-то вроде UserFinder, который может найти пользователя по email или login. Вместо него можно подсунуть некий объект возвращающий вполне конкретную модель пользователя.
Тестировать модель пользователя в этом тесте нам тоже не хочется, поэтому UserFinder должен вернуть не реальную модель User, а опять же некую заглушку, возвращающую наперед заданные данные.
Проще всего для создания заглушек использовать
моки из phpunit. Через эту штуку так же можно мокать отдельный метод всего класса. К примеру можно сделать, что бы метод findUser в модели LoginForm сразу отдавал "правильного" пользователя и тем самым убрать из рассмотрения UserFinder.
В общем, какой код - такие и тесты. Если код позволяет легко подставить зависимости, можно его тестировать в юнит стиле, иначе получаются недоинтерационные тесты. Соответственно, если будете писать тесты до самого кода, само собой будет получаться более тестируемый код.