Я пытаюсь написать тестовые примеры для своих методов web api.Как пройти UserIdentity из теста при модульном тестировании
[Fact]
public async Task Get_Message_By_Id()
{
var messages = new Messages()
{
MessageId = 1,
Recipient = "1;2;3",
Subject = "Test Subject",
MessageText = "test subject"
};
var mesBL = new Mock<IMessagesBusinessLogic>();
mesBL
.Setup(repo => repo.GetRecivedMessageById(It.IsAny<IWebToken>() ,messages.MessageId))
.Returns(Task.FromResult(messages));
var messageController = new MessagesController(mesBL.Object);
var contentResult = await messageController.GetRecivedMessageById(messages.MessageId) as OkObjectResult;
Assert.NotNull(contentResult);
}
Я получаю ошибку null reference
в то время как GetRecivedMessageById
вызова метода.
Метод контроллера;
[HttpGet]
[Route("{id:int}")]
public async Task<IActionResult> GetRecivedMessageById(int id)
{
return Ok(await _messagesBusinessLogic.GetRecivedMessageById(User.GetWebToken(), id));
}
Здесь проблема возникает, потому что идентификация пользователя проходит NULL.
Как мы можем передать его из теста?
Возможный дубликат [Mocking IPrincipal в ASP.NET Core] (http://stackoverflow.com/questions/38557942/mocking-iprincipal-in-asp-net-core) – Nkosi