Запустите хранимые процедуры в модульных тестах InMemory - PullRequest
0 голосов
/ 20 марта 2019

Как запустить хранимые процедуры в базах данных в памяти? Я пытаюсь найти эту функцию.

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

Это для настройки:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFProviders.InMemory;Trusted_Connection=True;ConnectRetryCount=0");
    }
}

var options = new DbContextOptionsBuilder<BloggingContext>()
                .UseInMemoryDatabase(databaseName: "Find_searches_url")
                .Options;

// Insert seed data into the database using one instance of the context
using (var context = new BloggingContext(options))
{
    context.Blogs.Add(new Blog { Url = "http://sample.com/cats" });
    context.Blogs.Add(new Blog { Url = "http://sample.com/catfish" });
    context.Blogs.Add(new Blog { Url = "http://sample.com/dogs" });

    context.SaveChanges();
}

1 Ответ

0 голосов
/ 13 июля 2019

краткий ответ;провайдер в памяти не может этого сделать.

У меня была такая же проблема;В модульных тестах я хранил проки всплывающих окон, и мне нужно было высмеивать результаты.После поиска библиотеки для этого и не найдя ни одной, которая могла бы выполнить большую 3 (FromSql, ExecuteSqlCommand и Queries), я написал свою собственную: EntityFrameworkCore.DbContextBackedMock.Moq .Он использует провайдер в оперативной памяти для большинства вещей и предоставляет макеты для битов, которые он не может сделать.

...