Unit testing 如何测试方法返回正确的值并在另一个变量中设置正确的值?

Unit testing 如何测试方法返回正确的值并在另一个变量中设置正确的值?,unit-testing,c#-4.0,testing,Unit Testing,C# 4.0,Testing,我有一个方法,作为参数接收一个列表,该列表包含树的节点和一个锯齿状数组,我希望其他节点重新绘制该数组。该方法返回具有新层次结构的列表。但是,原始节点不会丢失,而是另存为新树。我的方法是: public List<Nodes> exchangeNodes(List<Nodes> paramOriginalTree, Nodes[][] param newNodes) { //code } 公共列表交换节点(列表paramOriginalTree,节点[][]参数n

我有一个方法,作为参数接收一个列表,该列表包含树的节点和一个锯齿状数组,我希望其他节点重新绘制该数组。该方法返回具有新层次结构的列表。但是,原始节点不会丢失,而是另存为新树。我的方法是:

public List<Nodes> exchangeNodes(List<Nodes> paramOriginalTree, Nodes[][] param newNodes)
{
    //code
}
公共列表交换节点(列表paramOriginalTree,节点[][]参数newNodes)
{
//代码
}
对于单元测试,我可以使用一个方法调用这个exchangeNodes并测试结果是否是预期的结果。诸如此类的事:

公共无效ExchangeNodeTest() { //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?
List lstNewTree=exchangeNodes(lstActualTree,exchangeNodes);
断言(lstNewTree.Count=4);
....
//如何测试旧节点是否具有正确的层次结构?
}

但是,如何测试原始替换的节点是否具有正确的层次结构?因为该方法只返回新的层次结构。我希望避免返回一个锯齿状的arraid,例如一个所有被替换节点的层次结构列表,仅用于测试目的

谢谢

编辑:我需要测试原始替换的节点,因为它将保存在数据库中。我正在使用EF6和SQL Server。

如果您想使用,我建议您使用。您可以创建一个扩展方法,该方法将应用于作业:

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
    }
}
公共静态类FluentAssertionExtensions
{
public static void应该是等效的(此IEnumerable enumerable1,IEnumerable enumerable2)
{
enumerable1=enumerable1.ToList();//对集合进行Materialize
enumerable2=enumerable2.ToList();//对集合进行Materialize
enumerable1.Should().ContainInOrder(enumerable2);
enumerable2.Should()
}
}
否则,您可以创建一个简单的助手,该助手将使用for循环遍历集合