Skip to content

Commit ebed5ef

Browse files
authored
fix unit tests (#167)
* Fix DeepCopier mock issue in unit tests - Register DeepCopier service instance in TestKitSilo to prevent TestServiceProvider from auto-creating Mock - Resolves System.NotSupportedException: Type to mock (DeepCopier) must be an interface error - Tests now run properly, reduced from 20 failures to 10 failures out of 230 total tests - Only modified test code, no business logic changes * Fix Logger NullReferenceException in unit tests - Register NullLoggerFactory to prevent Mock Logger issues - Achieves 100% test pass rate - Resolves all mocking issues in test framework * feat:update test yaml
1 parent 20c1377 commit ebed5ef

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

.github/workflows/test-with-code-coverage.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ jobs:
2121
uses: actions/setup-dotnet@v4
2222
with:
2323
dotnet-version: '9.0.x'
24-
- name: chown
25-
run: |
26-
sudo chown -R $USER:$USER /home/runneradmin
2724
- name: Install dependencies
2825
run: dotnet restore --verbosity quiet
2926

src/Aevatar.TestKit/TestKitSilo.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,15 @@ private void UseEventSourcing()
103103
var codecProvider = new CodecProvider(ServiceProvider, mockOptionsManager.Object);
104104
LogConsistencyProvider = new TestLogConsistencyProvider(TestGrainStorage);
105105
ServiceProvider.AddKeyedService<ILogViewAdaptorFactory>("LogStorage", LogConsistencyProvider);
106+
// Create DeepCopier instance for testing - this won't be mocked by Moq
107+
var deepCopier = new DeepCopier(codecProvider, new CopyContextPool(codecProvider));
108+
// Register DeepCopier service so dependency injection won't try to create a Mock
109+
ServiceProvider.AddService<DeepCopier>(deepCopier);
110+
// Register Logger services to avoid Mock Logger issues that cause NullReferenceException
111+
ServiceProvider.AddService<Microsoft.Extensions.Logging.ILoggerFactory>(Microsoft.Extensions.Logging.Abstractions.NullLoggerFactory.Instance);
106112
ProtocolServices = new DefaultProtocolServices(new Mock<IGrainContext>().Object, NullLoggerFactory.Instance,
107-
new DeepCopier(codecProvider, new CopyContextPool(codecProvider)), null!);
113+
deepCopier, null!);
108114
ServiceProvider.AddService<ILogConsistencyProtocolServices>(ProtocolServices);
109-
ServiceProvider.AddService<Factory<IGrainContext, ILogConsistencyProtocolServices>>(sp =>
110-
ProtocolServices);
111115
}
112116

113117
/// <summary>

0 commit comments

Comments
 (0)