Как получить доступ к данным, возвращаемым контроллером при запуске в модульных тестах? - PullRequest
0 голосов
/ 11 января 2019

У меня есть веб-API Asp .net core 2.2. Я пытаюсь настроить модульное тестирование на нескольких контроллерах. У меня это работает, чтобы он указал, где он вызывает контроллер

Контроллер

[HttpGet("list")]
public ActionResult Get([FromQuery] string q = null)
    {
        if (q != null)
            return Ok(new ClientListResponse(ClientHelper.FindClientByClientIdOrClientName(_configurationDbContext.Clients, q)));

        return Ok(new ClientListResponse(_configurationDbContext.Clients.ToList()));
    }

Тест на вызов

var allClients = controller.Get();  

Выпуск

Теперь, когда я смотрю на него в отладке, все выглядит хорошо. Я вижу, что значение содержит правильный возвращаемый объект.

enter image description here

Однако, когда он пытается получить доступ к переменным, они не существуют.

enter image description here

Я подозреваю, что это как-то связано с ответом, являющимся ActionResult. Я пытался преобразовать его во все, что я могу придумать.

Как получить доступ к данным, возвращаемым контроллером при запуске в модульных тестах?

1 Ответ

0 голосов
/ 11 января 2019

Приведите его к OkObjectResult.

у нас:

var controller = SetupAdminTestsForPassword();
var result = controller.ValidateTokenForUserCreation(new ValidateUserTokenRequest() { token = "VALIDCREATEUSERTOKEN"});
var okResult = result as OkObjectResult;

// assert
Assert.IsNotNull(okResult);
Assert.IsNotNull(okResult.Value);
Assert.IsNotNull(okResult.Value as ValidateUserTokenResponse);
Assert.IsTrue((okResult.Value as ValidateUserTokenResponse).IsValid);

Мы также используем dotnet core 2.2 и Moq для тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...