❔ Unit test: The source 'IQueryable' doesn't implement 'IAsyncEnumerable<T>'

My test keep failing when it trying to get to this line of code
var foods = await _foodRepository.FindAll().ToListAsync(cancellationToken);

Detail

FindAll
IQueryable<T> FindAll(Expression<Func<T, bool>>? predicate = null);


Controller
    public async Task<IActionResult> GetAll(CancellationToken cancellationToken = default)
    {
        var foods = await _foodRepository.FindAll().ToListAsync(cancellationToken);
        return Ok(_mapper.Map<IEnumerable<FoodDTO>>(foods));
    }

Test
 public async Task FoodController_GetAll_ReturnOk()
    {
        #region[Arrange]
        var foods = A.Fake<IEnumerable<Food>>();
        var foodsDTO = A.Fake<IEnumerable<FoodDTO>>();
        A.CallTo(() => _mapper.Map<IEnumerable<FoodDTO>>(foods)).Returns(foodsDTO);
        var controller = new FoodController(_mapper, _foodRepository, _userFoodRepository);
        #endregion

        #region[Act]
        var result = await controller.GetAll();
        #endregion

        #region[Assert]
        result.Should().NotBeNull();
        result.Should().BeOfType(typeof(OkObjectResult));
        #endregion
    }
Was this page helpful?