我有一个方法,作为参数接收一个列表,该列表包含树的节点和一个锯齿状数组,其中我想用其他节点替换这些节点。该方法返回具有新层次结构的列表。但是,原来的节点并没有丢失,而是另存为一棵新树。我的方法是:
public List<Nodes> exchangeNodes(List<Nodes> paramOriginalTree, Nodes[][] param newNodes)
{
//code
}
好吧,通过单元测试,我可以使用调用此 exchangeNodes 的方法并测试结果是否为预期结果。类似这样的事情:
public 无效 exchangeNodesTest() { //1.- 创建节点并用树填充列表。 //2.- 使用交换创建一个锯齿状数组 //3.- 调用方法并将结果保存在新列表中 //4.- 我使用断言来测试结果是否正确
List<Nodes> lstNewTree = exchangeNodes(lstActualTree, exchangedNodes);
assert(lstNewTree.Count = 4);
....
//How I test if the old nodes has the correct hierarchy?
但是我如何测试原始替换节点是否具有正确的层次结构?因为该方法只返回新的层次结构。我想避免需要返回一个锯齿状的阵列,例如仅用于测试目的的所有替换节点的层次结构列表。
谢谢。
编辑:我需要测试原来的替换节点,因为它会保存在数据库中。我正在使用 EF6 和 SQL Server。
最佳答案
如果你想使用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 循环遍历集合的简单助手。
关于unit-testing - 如何测试方法返回正确的值并在另一个变量中设置正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25009764/