Кстати, я бы не стал использовать ViewData в методах контроллера, как в вашем примере.Подход словаря ViewData является быстрым и довольно простым в реализации, однако он может привести к опечаткам и ошибкам, которые не обнаруживаются во время компиляции.Альтернативой может быть использование шаблона ViewModel, который позволяет вам использовать строго типизированные классы для конкретного представления, в котором вам необходимо представить значения или содержимое внутри.В конечном итоге вы получаете проверку типов и время компиляции вместе с intellisense.
Переключение на шаблон ViewModel позволит вам вызвать метод PopulateCityCombo () из вашего контроллера для заполнения ViewModel, которая, в свою очередь, будет передана в соответствующее представление,
Оттуда вам нужно будет добавить фиктивный сервисный слой в конструктор ваших контроллеров из вашего модульного теста.
// arrange
var mock = new Mock<servicelayer>();
mock.Setup(x=>x.GetCities()).Returns(expectedData);
var controller = new YourController(mock.Object);
// act
var result = controller.ControllerMethod() as ViewResult;
var resultData = (YourViewModel)result.ViewData.Model;
// assert
// Your assertions