在单元测试中断言重复元素

Assert duplicate element in unit testing

我如何进行单元测试以检查对象列表不包含基于某些属性的重复元素。

这是我尝试做的:

[Fact]
public void RecupererReferentielContactClient_CasNominal_ResultOk()
{
     // Arange
     var contactCoreService = Resolve<IContactCoreService>();
     int clientId = 56605;
     ICollection<Personne> listPersone = new List<Personne>();

     // Act
     WithUnitOfWork(() => listPersone = contactCoreService.RecupererReferentielDeContactClient(clientId));

      // Assert
     listPersone.ShouldSatisfyAllConditions(
            () => listPersone.ShouldNotBeNull(),
            () => listPersone.ShouldBeUnique());            
}

如何使用 shouldly 进行单元测试?

按要检查的所有属性分组,然后测试所有组是否恰好有 1 个项目。

bool allUnique= listPersone
    .GroupBy(p=> new {properties you want to check})
    .All(g=>g.Count()==1);
Assert.True(allUnique)
actual.GroupBy(k => k.Id).ShouldAllBe(item => item.Count() == 1);

如果断言失败,将显示一个非唯一项