MOQと組み合わせてテストしたい次の方法があります。
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 メソッドと同じ値で作成されますが、単体テストは失敗します。これは、2 つのオブジェクトの値は同じですが、参照が異なるためだと思います。メモリ内に「異なる」オブジェクトが 2 つあります。これは正しいです?どうすれば修正できますか?