单元测试中新对象的引用
本文关键字:引用 对象 新对象 单元测试 | 更新日期: 2023-09-27 18:03:00
我有以下方法,我想测试与最小起订量:
public Company CreateCompany(Company company)
{
UnitOfWork.CompanyRepository.Insert(company);
//Give the user who created a company all permissions
UnitOfWork.CompanyPermissionRepository.Insert(new CompanyPermission
{
Useraccount = UnitOfWork.UseraccountRepository.GetByID(this.GetLoggedInUseraccount(this.Context.Session).Id),
Company = company,
AddUser = true,
CreateProject = true,
DeleteCompany = true,
DeleteFile = true,
DownloadFile = true,
EditCompany = true,
ManageProjectPermission = true,
RemoveUser = true,
UploadFile = true
});
UnitOfWork.Save();
return company;
}
我基本上想检查新的CompanyPermission
对象是否被插入到存储库:
companyPermissionRepository.Verify(r => r.Insert(companyPermissions.allCompanyPermissions));
这是我的设置:
companyPermissionRepository = new Mock<IGenericRepository<CompanyPermission>>();
unitOfWork.Setup(r => r.CompanyPermissionRepository).Returns(companyPermissionRepository.Object);
我的allCompanyPermissions
对象在单元测试中创建与createcompany方法相同的值,但单元测试失败。我认为这是因为两个对象有相同的值,但有不同的引用-内存中有两个对象是"不同的"。这是正确的吗?我怎么能修好它呢?
由于每次都插入一个新的CompanyPermission
对象,并且它不从其依赖项中获取任何参数,因此有两件事会出现在脑海中。
你可以测试CompanyPermissionRepository.Insert
是用CompanyPermission
对象调用的。
companyPermissionRepository.Verify(r => r.Insert(It.IsAny<CompanyPermission>());
或者,如果你想彻底(推荐),使用Moq的It.Is
companyPermissionRepository.Verify(r => r.Insert(It.Is<CompanyPermission>(cp => cp.AddUser=true && ....)