如何在fakeit Easy单元测试中比较两个列表 [英] How to compare two lists in fakeit Easy unit testing

查看:72
本文介绍了如何在fakeit Easy单元测试中比较两个列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 var fake = -keyword> new SystemUnderTest.AutoFakeContainer())
{
List< Employee> emplist = new 列表< Employee>();
emplist.Add( new 员工{Name = Emp_1,BasicSalary = 1000 ,Id = Guid.NewGuid(),HRA = 100 ,DA = 10 ,TotalSalary = 1110 });
emplist.Add( new 员工{Name = Emp_2,BasicSalary = 1000 * 2 ,Id = Guid.NewGuid() ,HRA = 200 ,DA = 20 ,TotalSalary = 2220 });
emplist.Add( new 员工{Name = Emp_3,BasicSalary = 1000 * 3 ,Id = Guid.NewGuid() ,HRA = 300 ,DA = 30 ,TotalSalary = 3330 });
var empRep = new EmployeeRepository();
var support = fake.Resolve< ISupport>();
var CalSalary = fake.Resolve< ICalSalaryClass>();


A.CallTo(()= > support.FindAllEmp())。返回(emplist);
A.CallTo(()= > CalSalary.CalculateSalary( 100 ))。WithAnyArguments ().Returns(emplist);
var result = empRep.CallSupportFindAll();


// CollectionAssert.AreEqual(emplist,result);
Assert.AreEqual(emplist,result);
var r1 =结果[ 0 ];
Assert.AreEqual(r1.Name,emplist [ 0 ]。姓名);
Assert.AreEqual(r1.TotalSalary,emplist [ 0 ]。TotalSalary);
Assert.AreEqual(r1.BasicSalary,emplist [ 0 ]。BasicSalary);

}









我想要比较从方法callSupportfindAll()返回的两个列表emplist和结果列表。这里是Assert.AreEqual(r1.Name,emplist [0] .Name);工作,但如果我们有成千上万的记录,那么需要写几千行。所以请回答 - 一行代码比较两个列表...提前感谢

解决方案

请先阅读我的评论。



我认为你正在寻找已经创建的方法:

1)如果你想得到相等数据的列表...使用 [ ^ ]

2)如果你想获得差异列表...使用 Enumerable.Except() [ ^ ]


using (var fake = new SystemUnderTest.AutoFakeContainer())
        {
            List<Employee> emplist = new List<Employee>();
            emplist.Add(new Employee { Name = "Emp_1", BasicSalary = 1000, Id = Guid.NewGuid(), HRA = 100, DA = 10, TotalSalary = 1110 });
            emplist.Add(new Employee { Name = "Emp_2", BasicSalary = 1000 * 2, Id = Guid.NewGuid(), HRA = 200, DA = 20, TotalSalary = 2220 });
            emplist.Add(new Employee { Name = "Emp_3", BasicSalary = 1000 * 3, Id = Guid.NewGuid(), HRA = 300, DA = 30, TotalSalary = 3330 });
            var empRep = new EmployeeRepository();
            var support = fake.Resolve<ISupport>();
            var CalSalary = fake.Resolve<ICalSalaryClass>();


            A.CallTo(() => support.FindAllEmp()).Returns(emplist);
            A.CallTo(() => CalSalary.CalculateSalary(100)).WithAnyArguments().Returns(emplist);
            var result = empRep.CallSupportFindAll();


           // CollectionAssert.AreEqual(emplist, result);
            Assert.AreEqual(emplist, result);
            var r1 = result[0];
            Assert.AreEqual(r1.Name, emplist[0].Name);
            Assert.AreEqual(r1.TotalSalary, emplist[0].TotalSalary);
            Assert.AreEqual(r1.BasicSalary, emplist[0].BasicSalary);

        }





I want to compare two list emplist and result list which is return from method callSupportfindAll(). here Assert.AreEqual(r1.Name, emplist[0].Name); worked but if we have thousands of record then need to write thousands of line. so please answer-- for one line code for compare two list... thanks in advance

解决方案

Please, read my comment first.

I think you're looking for methods which are already created:
1) if you want to get list of equal data... use Enumerable.Intersect[^]
2) if you want to get list of differences... use Enumerable.Except()[^]


这篇关于如何在fakeit Easy单元测试中比较两个列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆