已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
上个月关门了。
Improve this question
在我的Spring应用程序中,我想写测试。因此,“/companies”端点是安全的,需要一个ADMIN或USER角色。在单元测试中,我是否应该绕过安全性而只关注业务逻辑,然后在集成测试中使用安全性进行测试?或者我应该在单元测试中考虑安全性?
没有安全:
@WebMvcTest(CompanyController.class)
@AutoConfigureMockMvc(addFilters = false)
class CompanyControllerTest2 {
@Autowired
private MockMvc mockMvc;
@MockBean
private CompanyService companyService;
@Autowired
private ObjectMapper objectMapper;
@MockBean
private ResourceAccessHelper resourceAccessHelper;
@MockBean
private TokenAuthenticationFilter tokenAuthenticationFilter;
@Test
void shouldCreateCompany() throws Exception {
CompanyDto companyDto = CompanyDto.builder().companyName("My Company").description("Description").build();
CompanyDto savedCompany = companyDto;
savedCompany.setId(1L);
given(companyService.saveNewCompany(companyDto)).willReturn(savedCompany);
mockMvc.perform(post("/companies")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(companyDto)))
.andExpect(status().isCreated())
.andExpect(header().exists("Location"));
}
}
或者在这里使用@WithMockUser(username =“user”,roles = SecurityConfig.USER)?哪一个选项是更好的选择?
1条答案
按热度按时间z18hc3ub1#
我会做的(已经做的)是绕过单元/组件测试(需要测试类或特定层)的安全性,并在集成测试中添加安全性。