I'm currently working on a .NET 5.0 application.
I need to unit test an abstract base class, which implements a protected property protected IMediator Mediator
.
My class looks like this:
public abstract class MyControllerBase : Controller
{
protected IMediator Mediator { get; }
protected MyControllerBase(IMediator mediator)
{
Mediator = mediator;
}
}
My unit test looks like this:
[Fact]
[Trait(nameof(TestTraitName.Category), nameof(TestType.Unit))]
public void MyControllerTests()
{
var testController = new TestController(new Mediator(Mock.Of<ServiceFactory>()));
Assert.NotNull(anotherAuthController.TestMediator);
}
}
public class TestController : MyControllerBase
{
public IMediator TestMediator { get; set; }
public AnotherController(IMediator mediator)
: base(mediator)
{
TestMediator = mediator;
}
}
When I run my unit tests, unfortunately the protected property isn't covered by my tests.
Do you know, what is the correct way to unit test a protected property from an abstract base class in C#?
Do you know how to solve this issue?