NUnit Moq Поставщик для источника IQueryable не реализует IDbAsyncQueryProvider - PullRequest
0 голосов
/ 01 мая 2020

Я знаю, что этот ответ уже есть, но не могу приблизиться к решению моего дела. Надеюсь, кто-нибудь может помочь.

У меня есть следующий метод asyn c

public async Task<Car> GetCarAsync(int carId)
        {
            // ERROR HAPPENS HERE
            return await _context
                .Cars.FirstOrDefaultAsync(s => s.CarId == carId);
        }

И следующий тест NUnit с использованием Moq

[Test]
    public async Task GetCarAsyncTest()
    {
        // Arrange
        var mockContext = new Mock<IDbContext>();
        var cars = new List<Car>()
        {
            new Car()
            {
                CarId = 9999,
                Text = "Car1"
            }
        };
        mockContext.Setup(x => x.Cars).Returns(cars.ToDbSet());
        var controller = new CarController(
            new CarRepository(mockContext.Object),
            new CarModelBuilder(),
            new DateTimeProvider(),
            new CarProvider(
                new CarRepository(mockContext.Object)),
            new CarCategoryRepository(mockContext.Object));

        var config = new HttpConfiguration();
        WebApiConfig.RegisterRoutes(config);
        controller.WithMockRequest(config);


        // Act
        var car = await controller.GetCarAsync(9999);

        // Assert

    }

Метод контроллера также асин c тот, который только вызывает вышеупомянутый asyn c метод. Ошибка следующая:

The provider for the source IQueryable doesn't implement IDbAsyncQueryProvider. Only providers that implement IDbAsyncQueryProvider can be used for Entity Framework asynchronous operations

И происходит по первому GetCarAsync методу выше

...