[Fact]
public async Task it_logs_the_reportname(string endPoint)
{
using var site = new ReportApiSiteContext(_testOutputHelper);
var client = site.CreateClient();
await client.GetAsync("warm-me-up");
var logger = new FakeLogger<ReportsApiClient>();
var reportsApiClient = new ReportsApiClient(
client,
site.GetService<IIdentityApi>()!,
logger);
await reportsApiClient.GetReport(endPoint)
var expected = $"{endPoint} has been generated.";
var log = logger.Logs[LogLevel.Information].First();
Assert.Contains(expected, log);
}
In another class
public ReportsApiClient(HttpClient httpClient,
IIdentityApi identityApi,
ILogger<ReportsApiClient> logger)
{
_httpClient = httpClient;
_identityApi = identityApi;
_logger = logger;
}
The GetReport method logs the endpoint name. The above code works as expected, but the testFile has so many tests and logs that were not needed before, so the original coder has written the code below.
[Fact]
public async Task it_logs_the_reportname(string endPoint)
{
using var site = new ReportApiSiteContext(_testOutputHelper);
var logger = new FakeLogger<ReportsApiClient>();
//Now how can I pass this logger for it to work//
var reportsApiClient = await GetReportsApiClient(site);
await reportsApiClient.GetReport(endPoint);
var expected = $"{endPoint} has been generated.";
//This will not work now//
var log = logger.Logs[LogLevel.Information].First();
Assert.Contains(expected, log);
}
private static async Task<ReportsApiClient> GetReportsApiClient(site)
{
var client = site.CreateClient();
await client.GetAsync("warm-me-up");
var reportsApiClient = new ReportsApiClient(
client,
site.ServiceProvider!.GetService<IIdentityApi>()!,
NullLogger<ReportsApiClient>.Instance);
return reportsApiClient;
}
How can I pass the FakeLogger, in this case, to be used in the Test