Модульный тест Неожиданный сбой Assert

Я делаю модульный тест для удаления:

[Fact]
 public async Task DeleteSupplierAsync_SupplierIsDeleted_WhenSupplierIsFound()
 {
     using (var db = new SulferFireDbContext(Utilities.TestingDbContextOptions()))
     {
         // Arrange
         var seedSuppliers = SulferFireDbContext.GetSeedingSuppliers();
         await db.AddRangeAsync(seedSuppliers);
         await db.SaveChangesAsync();
         var recId = 123;
         var expectedSuppliers = seedSuppliers.Where(supplier => supplier.ID != recId).ToList();
         // Act
         await db.DeleteSupplierAsync(recId);
         // Assert
         var actualSuppliers = await db.Suppliers.AsNoTracking().ToListAsync();
         Assert.Equal(expectedSuppliers, actualSuppliers);
     }
}

Проблема в том, что expectedSuppliers а также actualSuppliers кажется равным, но тест не пройден. Это появляется после Assert.Equals когда я отлаживаю:

исключение

Заранее спасибо!

1 ответ

Assert.Equal использует объект .Equal сравнить два объекта. Как List<> это ссылочный тип, это сравнение не удастся, как вы уже испытали.

использование CollectionAssert вместо того, чтобы сравнить две коллекции. Я бы предложил AreEquivalent

//...code removed for brevity

CollectionAssert.AreEquivalent(expectedSuppliers, actualSuppliers);
Другие вопросы по тегам