Невозможно преобразовать IActionResult в bool - PullRequest
0 голосов
/ 29 октября 2019

Я пишу модульный тест для метода веб-API, который возвращает значение bool.

В настоящее время isUnique содержит код состояния 200 и значение true при выполнении следующей строки

var isUnique = controller.UniqueEmail(clientCompanyId, email);

Как сделатьЯ утверждаю это, потому что я получаю ошибку, не могу преобразовать IActionResult в ошибку bool, когда я делаю

 Assert.False(isUnique);

Тест

[Fact]
        public void Is_Not_UniqueEmail()
        {

            int clientCompanyId = 30;
            string email = "test.co.uk";

            var mockIdentityService = new Mock<IIdentityService>();

            mockIdentityService.Setup(x => x.CheckUniqueEmail(It.IsAny<int>(), It.IsAny<string>()))
               .Returns(true);

            var controller = new SecurityController(mockIdentityService.Object, null, null, null, null);

            var isUnique = controller.UniqueEmail(clientCompanyId, email);

            Assert.False(isUnique);
        }

Контроллер

[HttpGet]
    [AllowAnonymous]
    [Route("unique-email/{clientCompanyId:int}/{email}")]
    public IActionResult UniqueEmail(int clientCompanyId, string email)
    {
        var isUnique = _identityService.CheckUniqueEmail(clientCompanyId, email);
        if (isUnique)
        {
            return Ok(isUnique);
        }
        else
        {
            return NotFound(isUnique);
        }
    }

1 Ответ

0 голосов
/ 29 октября 2019

Ваш контроллер, вероятно, должен быть просто:

[HttpGet]
[AllowAnonymous]
[Route("unique-email/{clientCompanyId:int}/{email}")]
public IActionResult UniqueEmail(int clientCompanyId, string email)
{
    if (!CompanyExists(clientCompanyId))
    {
        return NotFound();
    }

    bool isUnique = _identityService.CheckUniqueEmail(clientCompanyId, email);
    return Ok(isUnique);
}

(CompanyExists возвращает true, если известна компания, иначе false)

, а затем

IActionResult response = controller.UniqueEmail(clientCompanyId, email);
OkObjectResult OKResponse = response as OkObjectResult;

Assert.IsNotNull(OKResponse);
Assert.AreEqual(false, OKResponse.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...