Пользователь будет нулевым, если вы запустите код вне контекста веб-запроса.Похоже, вы запускаете тесты для своих методов напрямую.
У вас есть два варианта.
Самым быстрым решением вашей проблемы, но не обязательно самым устойчивым, было бы просто вызвать ваш работающий веб-сайт из модульного теста как WebRequest.
Более устойчивым решением было бы объединение используемых вами зависимых от контекста серверных функций (таких как User
) в единый класс, который вы можете смоделировать / подделать.
Редактировать
Кто-нибудь может предложить лучший способ справиться с этим?Должен ли я реструктурировать этот код только для модульных тестов?
Суть в ответе "да".Что еще более важно, вы, вероятно, захотите, потому что это сделает вашу систему более гибкой и / или обслуживаемой в долгосрочной перспективе.