Tests : Domain Layer¶
-
Do create a unit tests for your
Managersuffixed services.- Do create Managers folder in GridLab.GMSS.<ModuleName>.Domain.Tests project.

- Do create an unit test for each domain service with <DomainModelName>Manager_Tests name.
In this case it is
IdentitySessionManager_Tests.public class IdentitySessionManager_Tests : IdentityDomainTestBase { private readonly IIdentitySessionRepository _identitySessionRepository; private readonly IIdentitySessionManager _identitySessionManager; private readonly IdentitySessionTestData _identitySessionTestData; public IdentitySessionManager_Tests() { _identitySessionRepository = GetRequiredService<IIdentitySessionRepository>(); _identitySessionManager = GetRequiredService<IIdentitySessionManager>(); _identitySessionTestData = GetRequiredService<IdentitySessionTestData>(); } [Fact] public async Task CreateAsync_Should_Create_Session() { // Arrange var sessionId = "session1"; var device = "device1"; var userId = Guid.NewGuid(); var tenantId = Guid.NewGuid(); var clientId = "client1"; var ipAddresses = "127.0.0.1"; // Act var result = await _identitySessionManager.CreateAsync(sessionId, device, null, userId, tenantId, clientId, ipAddresses); // Assert result.ShouldNotBeNull(); result.SessionId.ShouldBe(sessionId); } ... add more unit test depending on your domain manager behaviour. }The tests should cover the key functionalities of the
IIdentitySessionManagerinterface. -
Do not use constructor injection for tests.
Using
GetRequiredServiceprovides more flexibility in setting up the test environment. It allows the test class to resolve services at runtime, which can be useful if the services need to be configured or modified before being used in tests. -
Do not create unit test for private and protected methods of class. You should test behaviour not the methods.