Как смоделировать IdentityServerDbContext, чтобы добавить ApplicationUser - PullRequest
0 голосов
/ 26 сентября 2019

Я попробовал следующий код, но он дает исключения:

            var mockIdsDbContext = new Mock<IdentityServerDbContext>();
            var applicationUser = new ApplicationUser()
            {
                Id = Guid.NewGuid().ToString(),
                Email = "shashikant0423@gmail.com",
                PhoneNumber = "999999999"
            };

            var usersTestData = new List<ApplicationUser>() { applicationUser };
            var users = MockDbSet(usersTestData);
            mockIdsDbContext.Setup(x => x.Users).Returns(userManager.Object.Users);

Mock<DbSet<T>> MockDbSet<T>(IEnumerable<T> list) where T : class, new()
    {
        IQueryable<T> queryableList = list.AsQueryable();
        Mock<DbSet<T>> dbSetMock = new Mock<DbSet<T>>();
        dbSetMock.As<IQueryable<T>>().Setup(x => x.Provider).Returns(queryableList.Provider);
        dbSetMock.As<IQueryable<T>>().Setup(x => x.Expression).Returns(queryableList.Expression);
        dbSetMock.As<IQueryable<T>>().Setup(x => x.ElementType).Returns(queryableList.ElementType);
        dbSetMock.As<IQueryable<T>>().Setup(x => x.GetEnumerator()).Returns(() => queryableList.GetEnumerator());
        //dbSetMock.Setup(x => x.Create()).Returns(new T());
        return dbSetMock;
    }

, но я получил ошибку вроде: Невозможно создать экземпляр прокси класса: RenewPlus.IdentityServer.Data.IdentityServerDbContext.Не удалось найти конструктор без параметров

enter image description here

1 Ответ

0 голосов
/ 26 сентября 2019

Вместо насмешки над довольно сложным DbContext я бы порекомендовал вместо этого использовать драйвер Microsoft.EntityFrameworkCore.InMemory.

https://docs.microsoft.com/en-us/ef/core/providers/in-memory/

...