Microservice unit test using xUnit

Asked

Viewed 83 times

0

Hello, I have a method that uses a read Repository for a holiday table, in this case... I need to create a unit test using xUnit Follow the excerpt of my method:

[HttpGet]
    [ProducesResponseType(typeof(HolidayViewModel), (int)HttpStatusCode.OK)]
    [ProducesResponseType((int)HttpStatusCode.NoContent)]
    public async Task<IActionResult> GetAll()
    {
        var data = await _readRepository.FindAll()
        .ToListAsync()
        .ConfigureAwait(false);

        if (data == null || data.Count == 0)
            return NoContent();

        return Ok(data.ToViewModel());
    }

In the case the previous test was the following

private readonly Mock<IReadRepository<Holiday>> _repository = new Mock<IReadRepository<Holiday>>();

        [Fact]
        public async System.Threading.Tasks.Task Should_return_sucess_when_getting_holidays()
        {
            var mock = HolidayListFactory().AsQueryable().BuildMock();
            _repository.Setup(x => x.FindAll()).Returns(mock.Object);
            var controller = new HolidaysController(_repository.Object);
            var response = await controller.GetAll().ConfigureAwait(false) as OkObjectResult;
            Assert.Equal(response.StatusCode, (int)HttpStatusCode.OK);
        }

public List<Holiday> HolidayListFactory()
        {
            return new List<Holiday>()
            {
                new Holiday()
                {
                    Id = Guid.NewGuid(),
                    HolidayDate = DateTime.UtcNow,
                    HolidayName = "Holiday 1",
                    CreatedBy = "Yuri",
                    CreatedOn = DateTime.UtcNow,
                    CompanyId = Guid.NewGuid()
                },
                new Holiday()
                {
                    Id = Guid.NewGuid(),
                    HolidayDate = DateTime.UtcNow,
                    HolidayName = "Holiday 2",
                    CreatedBy = "Yuri",
                    CreatedOn = DateTime.UtcNow,
                    CompanyId = Guid.NewGuid()
                },
                new Holiday()
                {
                    Id = Guid.NewGuid(),
                    HolidayDate = DateTime.UtcNow,
                    HolidayName = "Holiday 3",
                    CreatedBy = "Yuri",
                    CreatedOn = DateTime.UtcNow,
                    CompanyId = Guid.NewGuid()
                }
            };
        }

However what was used in Buildmock now is no longer functional, I would like to know how I could test my method differently to this, could someone please help me?

  • 1

    I can’t understand your doubt.

  • In case the test I put up no longer works in the version . net core 3.0 and I would like to know another way to test by passing a mock to my Pository

1 answer

0


Fixed, my problem was with the files from Mockqueryable outdated, after upgrading with the github files all tests made worked and passed normally.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.