I’m using MediatR, and I’d like to test the logic inside the Handle method before saving the changes in the database. Here’s the code snippet:
public async Task<int> Handle(CreateSubItemCommand command, CancellationToken cancellationToken)
{
var item = await _repository.FindByIdAsync(command.itemId, cancellationToken);
if (item == null)
{
throw new ArgumentException($"The specified item was not found");
}
ItemModification(command, item);
var subItemId = createSubItem(item,command)
_repository.Update(item);
await repository.UnitOfWork.SaveEntitiesAsync(cancellationToken).ConfigureAwait(false);
return subItemId .Id;
}
I created the unit test with moq
[Fact]
public async void Test() {
//Arrange
var repository = new Mock<IRepository>();
var command = new CreateSubItemCommand(....);
var handler = new CreateSubItemCommandHandler(repository.Object);
//Act var subItemId = await handler.Handle(command, new System.Threading.CancellationToken());
//Assert
}
I don’t know how I can test the item before saving it to the database