MassTransit unit test does not hit breakpoint in consumer
I have problem with writing an unit test that will check my consumer. It's not hitting breakpoint in my Consumer when I am debugging test
code for test
what's confusing it's that assertions passes fine, but my class
code for test
[Theory]
[AutoData]
public async Task GivenUserCreatedEventIsSend_WhenProperlyEventIsHandled_ThenUserIsCreated(Guid userId)
{
await using var provider = new ServiceCollection()
.AddDbContext<ChatContext>(options => options.UseInMemoryDatabase("TestChatDatabase"))
.AddMassTransitTestHarness(cfg =>
{
cfg.AddConsumer<UserCreatedMessageHandler>();
})
.BuildServiceProvider(true);
using (var scope = provider.CreateScope())
{
var chatContext = scope.ServiceProvider.GetRequiredService<ChatContext>();
var harness = scope.ServiceProvider.GetRequiredService<ITestHarness>();
await harness.Start();
try
{
await harness.Bus.Publish<UserCreated>(new
{
Id = userId
});
Assert.True(await harness.Consumed.Any<UserCreated>());
await using (chatContext)
{
// Verify changes in the database
var entity = await chatContext.Users.FirstOrDefaultAsync( /* Add conditions to find the entity */);
entity.Should().NotBeNull();
// Add additional assertions to verify the state of the entity in the database
}
}
finally
{
await harness.Stop();
}
}
} [Theory]
[AutoData]
public async Task GivenUserCreatedEventIsSend_WhenProperlyEventIsHandled_ThenUserIsCreated(Guid userId)
{
await using var provider = new ServiceCollection()
.AddDbContext<ChatContext>(options => options.UseInMemoryDatabase("TestChatDatabase"))
.AddMassTransitTestHarness(cfg =>
{
cfg.AddConsumer<UserCreatedMessageHandler>();
})
.BuildServiceProvider(true);
using (var scope = provider.CreateScope())
{
var chatContext = scope.ServiceProvider.GetRequiredService<ChatContext>();
var harness = scope.ServiceProvider.GetRequiredService<ITestHarness>();
await harness.Start();
try
{
await harness.Bus.Publish<UserCreated>(new
{
Id = userId
});
Assert.True(await harness.Consumed.Any<UserCreated>());
await using (chatContext)
{
// Verify changes in the database
var entity = await chatContext.Users.FirstOrDefaultAsync( /* Add conditions to find the entity */);
entity.Should().NotBeNull();
// Add additional assertions to verify the state of the entity in the database
}
}
finally
{
await harness.Stop();
}
}
}what's confusing it's that assertions passes fine, but my class
UserCreatedMessageHandlerUserCreatedMessageHandler it's never called / hit by breakpoint (ctor nor Consume method)