Как я могу макетировать экземпляр в ASP. NET Базовом модульном тестировании с использованием Moq? - PullRequest
0 голосов
/ 06 февраля 2020

Написание модульного теста с помощью nunit в asp. net основной службе, я пытаюсь написать тестовый модуль контроллера.

[ApiController]
public class ConvertController : ControllerBase
{
    private readonly ILogger<ConvertController> _logger;
    private readonly Factory.IWorkbookFactory _workbookFactory;

    public ConvertController(ILogger<ConvertController> logger, Factory.IWorkbookFactory workbookFactory)
    {
        _logger = logger;
        _workbookFactory = workbookFactory;
    }

    [HttpPost]
    [Route("api/v1/[controller]/pdf")]
    public ConvertResponse Post(ConvertRequest req)
    {
        ConvertResponse res = new ConvertResponse();
        res.OutputData = new Converter(_workbookFactory.newInstance()).ExcelToPDF(req.InputData);

        return res;
    }
}

В этом случае можно ли смоделировать весь экземпляр конвертера?

1 Ответ

0 голосов
/ 06 февраля 2020

@ naruke, для того, чтобы имитировать тип `Converter ', его необходимо ввести, поэтому код необходимо изменить, как показано ниже.

Во-первых, реализовать Converter, как это.

Создать интерфейс IConverter.

public interface IConverter
{
 /*OutPut */ ExcelToPDF(/* input*/);
}

, затем реализовать

class Converter:IConverter
{
 ....
}

Теперь нет необходимости вводить IWorkbookFactory

[ApiController]
public class ConvertController : ControllerBase
{
    private readonly ILogger<ConvertController> _logger;
    //private readonly Factory.IWorkbookFactory _workbookFactory;
    private readonly IConverter _converter;
    public ConvertController(ILogger<ConvertController> logger,IConverter converter // Factory.IWorkbookFactory workbookFactory)
    {
    _logger = logger;
    //_workbookFactory = workbookFactory;
    _converter=converter;
    }

    [HttpPost]
    [Route("api/v1/[controller]/pdf")]
    public ConvertResponse Post(ConvertRequest req)
    {
        ConvertResponse res = new ConvertResponse();
        res.OutputData = _converter.ExcelToPDF(req.InputData);

        return res;
    }
}

надеюсь, это поможет.

...