Следующие параметры конструктора не имеют соответствующих данных осветителей - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь проверить свои контроллеры, используя xUnit, но получаю следующую ошибку во время выполнения Customer Controller:

"Следующие параметры конструктора не имеют подходящего приспособления данные: CustomerController customerController "

Тестовый класс

public class UnitTest1
{
    CustomerController _customerController;

    public UnitTest1(CustomerController customerController)
    {
        _customerController = customerController;
    }

    [Fact]
    public void PostTestSuccessful()
    {
        Guid guid = Guid.NewGuid();

        CustomerViewModel model = new CustomerViewModel()
        {
            Id = guid,
            Name = "testName",
            Email = "test email",
            PhoneNumber = "test phone",
            Address = "test address",
            City = "test city",
            Gender = "Male"
        };

        var actionResult = _customerController.Post(model);

        Assert.NotNull(actionResult);
        Assert.IsType<Task<IActionResult>>(actionResult);
        Assert.True(actionResult.IsCompletedSuccessfully);
    }

Класс CustomerController

[Route("customers")]
public class CustomerController : ControllerBase
{
    private readonly ILogger _logger;
    private readonly ICustomerService _customerService;

    public CustomerController(ILogger<CustomerController> logger,
        ICustomerService customerService)
    {
        _logger = logger;
        _customerService = customerService;
    }

    [HttpPost]
    public async Task<IActionResult> Post([FromBody] CustomerViewModel viewModel)
    {
        var customerToBeSaved = viewModel.Adapt<CustomerServiceModel>();

        var customer = await _customerService.SaveAsync(customerToBeSaved);

        var result = customer.Adapt<CustomerViewModel>();

        return Ok(result);
    }

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Просто добавьте CustomerController в конструктор, если вы не хотите использовать какие-либо фальшивые рамки.

0 голосов
/ 20 апреля 2019

В этой статье показано, как заставить Xunit работать с .Net Core ASP.Net очень хорошо. Это фактически заменяет запуск, так что ваши контроллеры работают в том же процессе, и вы можете проверить их, как если бы они были локальными.

https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.2

0 голосов
/ 04 июля 2018

Для среды тестирования вам нужна библиотека-макет, чтобы вводить фиктивный объект через DI в ваших классах тестирования. Вы можете использовать Nmock, Moq или любую другую библиотеку-макет для настройки внедрения конструктора.

https://www.c -sharpcorner.com / uploadfile / john_charles / насмешливо-в-сети-с MOQ /

http://nmock.sourceforge.net/quickstart.html

...