Я вижу, что вы используете 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
Встроенные псевдонимы отформатированы как ключевые слова, потому что являются ключевыми словами. Компилятор выполняет перевод ключевых слов типа данных языка в базовый тип CLR за вас.
В Visual Studio нет ничего, что автоматически выполняло бы этот перевод за вас, поэтому вам нужно будет написать свою собственную утилиту, которая сделает это. Есть несколько разных способов сделать это - вы можете написать макрос или плагин VS - но (IMHO) ни один из них не будет тривиальным для написания и обеспечения корректности.
Вы заявляете, что это как личные предпочтения, так и требования к стилю кодирования. . Я думаю, что проблемы с форматированием кажутся неуместными. Обычно проще / чище / предпочтительнее использовать псевдонимы языка вместо типов CLR. Кроме раскраски синтаксиса в текстовом редакторе, между ними нет абсолютно никакой разницы и действительно нет причин использовать имена CLR для ваших типов. Каковы причины (если таковые имеются), указанные в требованиях к стилю кодирования, для принудительного использования типов CLR вместо языковых псевдонимов?
Два типа означают точно то же самое, нет никакой опасности, что каждый будет иметь в виду что-то другое.
Единственная разница - то, как они смотрят, если это важно для Вас, можно записать макрос, который заменит любого созданного в псевдонимах Системными типами.