示例#1
0
        public ListAll(ITestOutputHelper output)
        {
            _output = output;
            var dbOptions = new DbContextOptionsBuilder <NotePadContext>()
                            .UseInMemoryDatabase(databaseName: "TestListNotes")
                            .Options;

            _notePadContext = new NotePadContext(dbOptions);
            NotePadContextSeed.Initialize(_notePadContext);
            _noteRepository = new NoteRepository(_notePadContext);
        }
示例#2
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.UseEnvironment("Testing");

            builder.ConfigureServices(services =>
            {
                services.AddEntityFrameworkInMemoryDatabase();

                //Create a new service provider.
                var provider = services
                               .AddEntityFrameworkInMemoryDatabase()
                               .BuildServiceProvider();

                //Add a database context (NotePadContext) using an in-memory
                services.AddDbContext <NotePadContext>(options =>
                {
                    options.UseInMemoryDatabase("InMemoryDbForTesting");
                    options.UseInternalServiceProvider(provider);
                });

                //Build the service provider
                var sp = services.BuildServiceProvider();

                //Create a scope to obtain a reference to the database
                using (var scope = sp.CreateScope())
                {
                    var scoppedServices = scope.ServiceProvider;
                    var db = scoppedServices.GetRequiredService <NotePadContext>();

                    var logger = scoppedServices.GetRequiredService <ILogger <WebTestFixture> >();

                    //Ensure the database is created
                    db.Database.EnsureCreated();
                    try
                    {
                        NotePadContextSeed.Initialize(db);
                    }
                    catch (Exception ex)
                    {
                        logger.LogError(ex, $"An error occurred seeding the " +
                                        $"database with test messages. Error: {ex.Message}");
                    }
                }
            });
            base.ConfigureWebHost(builder);
        }
        public static void SeedDatabase(IHost host)
        {
            var scopeFactory = host.Services.GetRequiredService <IServiceScopeFactory>();

            using (var scope = scopeFactory.CreateScope())
            {
                var context = scope.ServiceProvider.GetRequiredService <NotePadContext>();
                if (context.Database.EnsureCreated())
                {
                    var logger = scope.ServiceProvider.GetRequiredService <ILogger <Program> >();
                    try
                    {
                        NotePadContextSeed.Initialize(context);
                        Debug.Print("A database seeding was initialize");
                    }
                    catch (Exception ex)
                    {
                        logger.LogError(ex, "A database seeding error ocurred.");
                    }
                }
            }
        }