Как получить переменную int, которая внутри моего метода контроллера, когда я пишу модульный тест с xUnit - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь написать модульный тест для моего контроллера. Я использую xUnit для проверки своих методов.

Я могу обратиться к методу "changePasswordX" внутри моего контроллера для тестирования, но не могу добраться до своей переменной userId и значения претензии, чтобы проверить, равны они или нет?

Как я могу проверить этот код в xUnit?

    [HttpGet("ChangePassword")]
    public async Task<IActionResult> ChangePassword(int userId, oldPassword, newPassword)
    {      
        if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            return Unauthorized();

         _repo.changePasswordX(userId, oldPassword, newPassword);

        return Ok();
    }

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Непонятно, чего вы на самом деле пытаетесь достичь, но это неправильный способ написания модульных / интеграционных тестов. Вы не должны и не должны тестировать значение userId в сравнении с заявкой самостоятельно в своем модульном тесте. Вы знаете, что если оно не совпадает, ваше действие возвращается и UnauthorizedResult, тогда как если оно совпадает, вы получите OkResult. Если вы выполняете модульное тестирование, вы просто заглушаете своего пользователя, вызываете действие как метод и проверяете возвращаемое значение. Если вы проводите интеграционное тестирование, процедуры в основном такие же: вы авторизуете вызов и проверяете, что код состояния - 401 или 200, в зависимости от того, в каком случае вы тестируете.

0 голосов
/ 02 ноября 2018

Модульное тестирование не проверяет каждый промежуточный результат каждого шага метода.

Модульное тестирование предназначено для проверки общего выхода или возвращаемого значения метода при определенных входных данных.

Если вам нужно протестировать эту единственную строку кода, поместите ее в отдельное место (библиотеку), где ее можно назвать и проверено.

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