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 つあります。これは正しいです?どうすれば修正できますか?