Skip to content

Instantly share code, notes, and snippets.

@evan-boissonnot
Last active December 21, 2021 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evan-boissonnot/69f05705de2cf4eba86ea89c4df0a46c to your computer and use it in GitHub Desktop.
Save evan-boissonnot/69f05705de2cf4eba86ea89c4df0a46c to your computer and use it in GitHub Desktop.
Mediatr and service collection to test handler within controller
public async Task ShouldReturnListOfSelfies()
{
// ARRANGE
var expectedList = new List<Selfie>()
{
new Selfie() { Wookie = new Wookie() },
new Selfie() { Wookie = new Wookie() }
};
var repositoryMock = new Mock<ISelfieRepository>();
repositoryMock.Setup(item => item.GetAll(It.IsAny<int>())).Returns(expectedList);
var services = new ServiceCollection();
var serviceConfig = new MediatRServiceConfiguration();
ServiceRegistrar.AddRequiredServices(services, serviceConfig);
services.AddScoped<IRequestHandler<SelectAllSelfiesQuery, List<SelfieResumeDto>>, SelectAllSelfiesHandler>();
//services.AddMediatR(typeof(SelectAllSelfiesHandler).GetType().Assembly);
services.AddSingleton(typeof(ISelfieRepository), repositoryMock.Object);
var provider = services.BuildServiceProvider();
var mediator = provider.GetRequiredService<IMediator>();
var service = provider.GetRequiredService<ISelfieRepository>();
//mediatorMock.Setup(item => item.Send(It.IsAny<int>(), CancellationToken.None)).Returns(Task.FromResult<object>(expectedList));
var controller = new SelfiesController(mediator, repositoryMock.Object, new Mock<IWebHostEnvironment>().Object);
// ACT
var result = await controller.GetAll();
// ASSERT
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
OkObjectResult okResult = result as OkObjectResult;
var resultObject = okResult.Value;
Assert.NotNull(resultObject);
Assert.IsType<List<SelfieResumeDto>>(resultObject);
List<SelfieResumeDto> list = okResult.Value as List<SelfieResumeDto>;
Assert.True(list.Count == expectedList.Count);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment