重构void方法可测试

时间:2019-01-04 13:10:50

标签: c# unit-testing refactoring mstest

考虑到我有Class1,该类具有一种方法来确定输入对象应转换为的类型。我要做的是编写一些单元测试以确保该功能。我不想测试TypeAConvertor方法或TypeBConvertor方法。我想测试有关正确决策的CheckAndStore方法。现在,此方法的返回类型为void。因此,我无法访问转换后的对象。每当调用CheckAndStore方法时,在一个数组中输入的状态可以不同,但​​是99%的状态相同

    public class Class1
    {
    public void CheckAndStore(Input[] inputs)
    {

            foreach (var input in inputs)
            {

                if (input.State==1)
                {
                    TypeA result = TypeAConvertor.Convert(input);
                  //Store in TypeA mongo collection
                }
                else if (input.State==2)

                {
                    TypeB result = TypeBConvertor.Convert(input);
                //Store in TypeB mongo collection

                }
            //other conditions
            }



    }

}

我需要重构此方法以使其可测试,我正在考虑的是返回一个具有IList和IList两个属性的对象,并将结果一一添加到这两个列表中,但是我认为效率不高,因为在99中%我初始化了未使用的和空的列表。有没有人有更好的解决方案来重构它?

0 个答案:

没有答案