I am trying to Unit test a method which in in class TWService and require two dependencies to Inject i.e IXMLResponseSave and IConfiguration. I am able to inject dependency for IXMLResponseSave using below line in my Fact.
services.AddTransient<IXMLResponseSave, XMLFileResponseSaveBlob>();
How should I inject dependency for IConfiguration.
Below is my sample Controller code which i want to test.
[Route("api/[controller]")]
[AllowAnonymous]
[ApiController]
public class TWBookingController : ControllerBase
{
private readonly ITWService _twservice;
public TWBookingController(ITWService tWService)
{
_twservice = tWService;
}
public IActionResult SomeTestAction([FromBody]SomeParameter someParameter)
{
if(someParameter !=null && ValidatePassenger(someParameter) && (someParameter.pnrRequired>0 || someParameter.quotesrRequired > 0))
{
var result = _twservice.SomeTestMethod(someParameter);
return Ok(result);
}
else
return BadRequest();
}
}
public class TWService : ITWService
{
private IConfiguration _config;
private IXMLResponseSave _xMLResponseSave;
private string format = "Mddyyyyhhmmss";
public TWService(IConfiguration config, IXMLResponseSave xMLResponseSave)
{
_config = config;
_xMLResponseSave = xMLResponseSave;
}
public TWAutoSearchRes SomeTestMethod(SomeParameter someParameter)
{
//Some Implementation
}
}
Code written for Unit Test.
[Fact]
public void Test_Valid()
{
someParameter_Valid = BuildValidRequest();
var services = new ServiceCollection();
services.AddTransient<ITWService, TWService>();
services.AddTransient<IXMLResponseSave, XMLFileResponseSaveBlob>();
var serviceProvider = services.BuildServiceProvider();
_tWService = serviceProvider.GetService<ITWService>();
var response = _tWService.SomeTestMethod(someParameter_Valid);
Assert.IsType<OkResult>(response);
}
Currently I am getting below error message:
Unable to resolve service for type 'Microsoft.Extensions.Configuration.IConfiguration' while attempting to activate ''