Код: Выделить всё
public void deleteBookById(Guid id)
{
var book = this.applicationDbContext.Books.Find(id);
if (book == null)
throw new InvalidOperationException($"Book with id {id} does not exist");
this.applicationDbContext.Remove(book);
this.applicationDbContext.SaveChanges();
}
Код: Выделить всё
[Fact]
public void DeleteBookById_BookExists_BookIsDeleted()
{
var bookId1 = Guid.NewGuid();
var bookId2 = Guid.NewGuid();
var books = new List
{
new Book
{
Id = bookId1,
Name = "Book 1",
Price = 10,
Author = new Author { Name = "Author 1" },
Categories = new List { new Category { Name = "Category 1" } }
},
new Book
{
Id = bookId2,
Name = "Book 2",
Price = 20,
Author = new Author { Name = "Author 2" },
Categories = new List { new Category { Name = "Category 2" } }
}
};
var queryable = books.AsQueryable();
mockBooks.As().Setup(m => m.Provider).Returns(queryable.Provider);
mockBooks.As().Setup(m => m.Expression).Returns(queryable.Expression);
mockBooks.As().Setup(m => m.ElementType).Returns(queryable.ElementType);
mockBooks.As().Setup(m => m.GetEnumerator()).Returns(queryable.GetEnumerator());
mockContext.Setup(c => c.Books).Returns(mockBooks.Object);
bookService.deleteBookById(bookId1);
var result1 = bookService.getBookById(bookId1);
Assert.Null(result1);
var result2 = bookService.getBookById(bookId2);
Assert.NotNull(result2);
}
Код: Выделить всё
"Message:
System.InvalidOperationException : Book with id a3597441-548e-49b0-8e15-e86b10926e85 does not exist
Stack Trace:
BookService.deleteBookById(Guid id) line 117
BookServiceTests.DeleteBookById_BookExists_BookIsDeleted() line 153"
Я хочу сделать это с помощью Moq, но не знаю, как правильно решить эту проблему, тоже пробовал разными способами.
Спасибо!< /п>
Подробнее здесь: https://stackoverflow.com/questions/791 ... ook-method
Мобильная версия