Я пытаюсь выполнить модульное тестирование метода, который входит в класс TWService
и требует две зависимости для внедрения, т.е. IXMLResponseSave
и IConfiguration
.Я могу ввести зависимость для IXMLResponseSave
, используя строку ниже в моем Fact.
services.AddTransient<IXMLResponseSave, XMLFileResponseSaveBlob>();
Как мне ввести зависимость для IConfiguration
.
Ниже приведен мой пример кода контроллера, который яхочу проверить.
[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
}
}
Код, написанный для модульного теста.
[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);
}
В настоящее время я получаю сообщение об ошибке ниже:
Не удается разрешить службу для типа «Microsoft.Extensions.Configuration.IConfiguration» при попытке активировать «
».