С# тест на метод удаления книгиC#

Место общения программистов C#
Ответить
Anonymous
 С# тест на метод удаления книги

Сообщение Anonymous »

Метод удаления моего книжного сервиса выглядит так:

Код: Выделить всё

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);
}

Тест не выполнен для результата 1, поскольку:

Код: Выделить всё

"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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»