我有一个方法,当参数接收一个列表,该列表包含树的节点和锯齿状的数组,我希望由其他人重新组建这些节点。该方法返回具有新层次结构的列表。但是,原始节点不会丢失,而是保存为新树。我的方法是:
public List<Nodes> exchangeNodes(List<Nodes> paramOriginalTree, Nodes[][] param newNodes)
{
//code
}
好吧,通过单元测试,我可以使用一个调用此exchangeNodes的方法,并测试结果是否为预期结果。这样的事情:
public void exchangeNodesTest() { //1.-创建节点并使用树填充列表。 //2.-用交换创建一个锯齿状数组 //3.-调用方法并将结果保存在新列表中 //4.-我使用asserts来测试结果是否正确
List<Nodes> lstNewTree = exchangeNodes(lstActualTree, exchangedNodes);
assert(lstNewTree.Count = 4);
....
//How I test if the old nodes has the correct hierarchy?
}
但是我如何测试原始替换节点是否具有正确的层次结构?因为该方法仅返回新的层次结构。我想避免需要返回一个锯齿状的arraid例如所有被替换节点的层次结构列表仅用于测试目的。
感谢。
编辑:我需要测试原始替换节点,因为它将保存在数据库中。我正在使用EF6和SQL Server。
答案 0 :(得分:1)
如果您想使用我推荐的Fluent Assertions。您可以创建一个将作业的扩展方法:
public static class FluentAssertionsExtensions
{
public static void ShouldBeEquivalentWithOrder<T>(this IEnumerable<T> enumerable1, IEnumerable<T> enumerable2)
{
enumerable1 = enumerable1.ToList(); // to materailize the collection
enumerable2 = enumerable2.ToList(); // to materailize the collection
enumerable1.Should().ContainInOrder(enumerable2);
enumerable2.Should().ContainInOrder(enumerable1); // to meke sute enumerable2 is not just a subset of enumerbale1
}
}
否则,您可以创建一个简单的帮助程序,它将使用for循环来遍历集合。