Unit testing ‐ nSubstitute examples - Habilya/LearningCourseNotes GitHub Wiki
public IDateTimeProvider DateTimeProvider { get; private set; } = Substitute.For<IDateTimeProvider>();
public IDataAccessNew DataAccess { get; private set; } = Substitute.For<IDataAccessNew>();
public IWatcherFileSystemGenericProcessesFactory GenericProcessFactory { get; private set; } = Substitute.For<IWatcherFileSystemGenericProcessesFactory>();
public ILoggerAdapter<WatcherFileSystemGenericService> Logger { get; private set; } = Substitute.For<ILoggerAdapter<WatcherFileSystemGenericService>>();
public ILoggerAdapter<GenericWatcherProcess> LoggerProcess { get; private set; } = Substitute.For<ILoggerAdapter<GenericWatcherProcess>>();
public ILoggerAdapter<ProcessConfigurationValidation> LoggerValidation { get; private set; } = Substitute.For<ILoggerAdapter<ProcessConfigurationValidation>>();
public IEmailSender EmailSender { get; private set; } = Substitute.For<IEmailSender>();
var _processConfigurationValidation = new ProcessConfigurationValidation(DateTimeProvider, LoggerValidation);
GenericProcessFactory
.MakeProcess(ProcessCreationConstants.EDT_PERIODIC_UPDATE_CSV_PROCESS_OBJECT_CODE, Arg.Any<IServiceProvider>())
.Returns(callInfo => new PeriodicUpdateProcessCSV(
LoggerProcess,
EmailSender,
DateTimeProvider,
DataAccess,
ServiceConfiguration,
_processConfigurationValidation
));
[Fact]
public async Task LogWarningEntries_ShouldMatch()
{
// Arrange
// Act
var actual = _fixture.Logger
.ReceivedCalls()
.Where(q => q.GetMethodInfo().Name == "LogWarning")
.Select(q => q.GetArguments().First())
.ToList();
// Assert
await Verify(actual, _verifySettings)
.DontScrubDateTimes();
}
[Fact]
public async Task LogEntries_ShouldMatch()
{
// Arrange
// Act
var actual = _fixture.LoggerProcess
.ReceivedCalls()
.Select(q => q.GetMethodInfo().Name == "LogError"
? q.GetArguments()[1]
: q.GetArguments().First())
.ToList();
// Assert
await Verify(actual, _verifySettings)
.DontScrubDateTimes();
}