早上好,
我想測驗一個服務:公司。但是我有一個問題。當我想通過從我的 sql 檔案中檢索用戶來執行測驗時,我得到了這個用戶的錯誤。但是,當我在此服務中添加 @Mock 注釋時,測驗通過了。但是,我必須將此服務放在@InjectMocks 中。
請你幫助我好嗎 ?
public class CompanyServiceUnitTest {
@InjectMocks
private CompanyService companyService;
@Mock
private UserCompanyService userCompanyService;
@Mock
private CompanyRepository companyRepository;
@Test
public void checkUserCompanyServiceNotCalled_WhenuserListEmpty()
throws BadRequestException, ResourceNotFoundException {
User user2 = new User();
user2.setId(3);
List<User> listUsers = new ArrayList<>();
CompanyForm companyForm = new CompanyForm();
companyForm.setName("ekeepit");
companyForm.setCity("Lille");
companyForm.setContact("Ekeep");
companyForm.setEmail("[email protected]");
companyForm.setPhone("0303034343");
companyForm.setUsers(listUsers);
Company company1 = companyService.addCompany(companyForm, user2);
verifyNoInteractions(userCompanyService);
}
和 addCompany 方法:
public Company addCompany(final CompanyForm companyForm, final User organisationOwner)
throws ResourceNotFoundException, BadRequestException {
if (companyForm == null || organisationOwner == null) {
log.error("CompanyForm and OrganisationOwner can not be null");
throw new BadRequestException("CompanyForm and OrganisationOwner can not be null");
} else if (StringUtils.isEmpty(companyForm.getName()) || StringUtils.isEmpty(companyForm.getContact())
|| StringUtils.isEmpty(companyForm.getEmail()) || StringUtils.isEmpty(companyForm.getPhone())
|| StringUtils.isEmpty(companyForm.getCity())) {
log.error("All fields must be filled.");
throw new BadRequestException("All fields must be filled.");
} else if (!pattern.matcher(companyForm.getEmail()).matches()) {
log.error("Email format is not valid.");
throw new BadRequestException("Email format is not valid.");
}
Company company = Company.builder().createdAt(LocalDateTime.now())
.organization(this.organizationRepository.findOrganizationByOwner(organisationOwner)
.orElseThrow(() -> new ResourceNotFoundException(
"No organisation for the user " organisationOwner.getId())))
.name(companyForm.getName()).disable(false).city(companyForm.getCity())
.contact(companyForm.getContact()).email(companyForm.getEmail()).phone(companyForm.getPhone()).build();
companyRepository.save(company);
if (Objects.nonNull(companyForm.getUsers())) {
List<UserCompany> userCompanies = companyForm.getUsers().stream().map(user -> {
UserCompany userCompany = new UserCompany();
userCompany.setUser(user);
userCompany.setCompany(company);
userCompany.setDisable(false);
return userCompany;
}).collect(Collectors.toList());
this.userCompanyService.add(userCompanies);
}
return company;
uj5u.com熱心網友回復:
你的 addCompany 方法呼叫了 organizationRepository.findOrganizationByOwner(...) 所以你需要模擬這個方法的行為
@Mock
private OrganizationRepository organizationRepository;
// something like this
when(organizationRepository.findOrganizationByOwner(organisationOwner)).thenReturn(Optional.of(organisation));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513957.html
標籤:春天单元测试模仿者
上一篇:如何在Django中測驗洗掉實體
下一篇:測驗Kotest測驗
