Как я заставляю Visual Studio генерировать код с помощью Системных типов (Int32) вместо встроенных псевдонимов (интервал)

Я вижу, что вы используете EF core DbContext в вашем MovieRepository. Поэтому вместо использования mock, база данных EF Core InMemory будет для вас отличным вариантом. Это также уменьшит сложность.

Напишите ваш метод GetAllTest() следующим образом:

[Fact]
public void GetAllTest()
{
        var options = new DbContextOptionsBuilder()
            .UseInMemoryDatabase(databaseName: "MovieListDatabase")
            .Options;

        // Insert seed data into the database using one instance of the context
        using (var context = new MovieDbContext(options))
        {
            context.Movies.Add(new Movie {Id = 1, Title = "Movie 1", YearOfRelease = 2018, Genre = "Action"});
            context.Movies.Add(new Movie {Id = 2, Title = "Movie 2", YearOfRelease = 2018, Genre = "Action"});
            context.Movies.Add(nnew Movie {Id = 3, Title = "Movie 3", YearOfRelease = 2019, Genre = "Action"});
            context.SaveChanges();
        }

        // Use a clean instance of the context to run the test
        using (var context = new MovieDbContext(options))
        {
            MovieRepository movieRepository = new MovieRepository(context);
            List movies == movieRepository.GetAll()

            Assert.Equal(3, movies.Count);
        }
}

Примечание. Не забудьте установить пакет Microsoft.EntityFrameworkCore.InMemory nuget следующим образом:

Install-Package Microsoft .EntityFrameworkCore.InMemory

blockquote>

Для получения дополнительной информации: Тестирование с InMemory

8
задан Anthony Mastrean 4 September 2009 в 13:27
поделиться

2 ответа

Встроенные псевдонимы отформатированы как ключевые слова, потому что являются ключевыми словами. Компилятор выполняет перевод ключевых слов типа данных языка в базовый тип CLR за вас.

В Visual Studio нет ничего, что автоматически выполняло бы этот перевод за вас, поэтому вам нужно будет написать свою собственную утилиту, которая сделает это. Есть несколько разных способов сделать это - вы можете написать макрос или плагин VS - но (IMHO) ни один из них не будет тривиальным для написания и обеспечения корректности.

Вы заявляете, что это как личные предпочтения, так и требования к стилю кодирования. . Я думаю, что проблемы с форматированием кажутся неуместными. Обычно проще / чище / предпочтительнее использовать псевдонимы языка вместо типов CLR. Кроме раскраски синтаксиса в текстовом редакторе, между ними нет абсолютно никакой разницы и действительно нет причин использовать имена CLR для ваших типов. Каковы причины (если таковые имеются), указанные в требованиях к стилю кодирования, для принудительного использования типов CLR вместо языковых псевдонимов?

1
ответ дан 6 December 2019 в 01:40
поделиться

Два типа означают точно то же самое, нет никакой опасности, что каждый будет иметь в виду что-то другое.

Единственная разница - то, как они смотрят, если это важно для Вас, можно записать макрос, который заменит любого созданного в псевдонимах Системными типами.

1
ответ дан 6 December 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: