Модульный тест Неожиданный сбой 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);