2013-03-09 3 views
1

У меня есть следующий метод, который я хотел бы попробовать себя в сочетании с 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, но с ошибкой unit-test. Я думаю, это связано с тем, что два объекта имеют одинаковые значения, но имеют разные ссылки - в памяти есть 2 объекта, которые являются «разными». Это верно? Как я смогу это исправить?

ответ

1

Поскольку вы вставляете новый объект 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 && ....) 
+0

Большое спасибо. Будут следовать вашей рекомендации. :) – mosquito87

Смежные вопросы