Create and running tests- part 4
WebAPI2CLI
This is a part of the series where about how I made the WebAPI2CLI - Execute ASP.NET Core WebAPI from Command LineSource code on https://github.com/ignatandrei/webAPI2CLI/
I have made a TestWebSite , in .NET Core 3.1, I was also thinking that WebApplicationFactory exists and tutorial like https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-3.1 it will be easy to test the site.
However, I have found the hard way that is not a real server : it does not have the adresses / ports open. Read https://github.com/dotnet/aspnetcore/issues/4892 .
So I have made a hack – see public class LocalServerFactory in the source code.
Also, WithWebHostBuilder helps create a new WebApplicationFactory -used to test with / or without / CLI_ENABLED command line
Second point was testing methods like
configuration.GetValue<int?>(“CLI_HELP”, null);
Because it is an extension function, I cannot mock. So I refactored the code to
public bool ShouldShowHelp()
{
//deleted for easy of automating testing
//var showHelp = configuration.GetValue<int?>(“CLI_HELP”, null);
var cliHelp = configuration[“CLI_HELP”];
var showHelp = int.TryParse(cliHelp, out var val) && val == 1;
return showHelp;
}
Also, I have resorted to XBehave, to have tests written in easy form. And to Moq to mock various properties.
Leave a Reply