Nic*_*ner 1 f# unit-testing fsunit
我想检查两个列表是否具有相同的成员,无论顺序如何:
let memCount items = items |> Seq.countBy id |> Map.ofSeq
let memberEquals items1 items2 = memCount items1 = memCount items2
Run Code Online (Sandbox Code Playgroud)
目前,我在测试中使用它,如下所示:
memberEquals expected actual |> should be True
Run Code Online (Sandbox Code Playgroud)
然而,这对于错误报告来说并不是那么好。
我可以扩展 FsUnit 以添加memberEquals类似的equalsorcontains吗?或者,我可以在比较列表之前先对列表进行排序。这里最好的方法是什么?
(我正在将 FsUnit 与 nUnit 一起使用,因为它的价值。)
您的memberEquals函数不会测试列表是否具有相同的成员(仅具有相同数量的项目)。最简单的方法是:
let memberEquals items1 items2 = (set items1 = set items2)\nRun Code Online (Sandbox Code Playgroud)\n\n如果列表可能包含重复项,您需要将它们作为列表进行排序和比较。
\n\n\xe2\x80\xa0set您可以在MSDN上阅读有关该函数的信息。