Не реализовано исключение при попытке загрузить один объект с помощью LINQ на EF Core? - PullRequest
0 голосов
/ 04 марта 2019

Я пишу свои собственные тесты для макета структуры сущностей на ядре .NET, однако у меня возникли некоторые проблемы, так как некоторые запросы LINQ работают нормально, а другие выдают не реализованное исключение.Это базовый справочник запросов, который я использовал:

https://docs.microsoft.com/en-us/ef/core/querying/basic

Вот пример проблемы с двумя тестами.Первый использует запрос ToList () для загрузки всех данных и проверяет первый и единственный объект.Это работает, но не идеально.Второй тест пытается захватить конкретный объект, используя его идентификатор, следуя инструкциям руководства «Загрузка одного объекта».Однако это вызывает исключение.

    [TestMethod]
    public void Test_AddBook()
    {
        // Arrange
        var context = new TestContext();
        var service = new BookStore(context);

        // Act
        service.AddBook(1, "Wuthering Heights", "Emily Brontë", "Classics", 7.99, 5);

        //Assert
        var books = context.Books.ToList();
        Assert.AreEqual(books[0].Title, "Wuthering Heights");
    }

    [TestMethod]
    public void Test_AddBook2()
    {
        // Arrange
        var context = new TestContext();
        var service = new BookStore(context);

        // Act
        service.AddBook(1, "Wuthering Heights", "Emily Brontë", "Classics", 7.99, 5);

        //Assert
        var book = context.Books.Single(b => b.Id == 1);
        Assert.AreEqual(book.Title, "Wuthering Heights");
    }

Отладчик показывает идентификатор книги в контексте: 1:

enter image description here

И код для TestContext:

class TestContext : IBookContext
{
    public TestContext()
    {
        this.Books = new TestDbSet<Book>();
    }

    public DbSet<Book> Books { get; set; }
    public int SaveChangesCount { get; private set; }
    public int SaveChanges()
    {
        this.SaveChangesCount++;
        return 1;
    }
}

Это учебник, которому я следовал, с некоторыми изменениями, чтобы адаптировать его для .NET Core:

https://docs.microsoft.com/en-us/ef/ef6/fundamentals/testing/writing-test-doubles

...