我想在端点上运行一些集成测试。一切都按预期进行,直到我向业务/服务层添加了外观。完成后,测试结果(内容主体)始终为空。
以下是测试:
@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
public class OrderControllerTest extends AbstractJUnit4SpringContextTests {
@Autowired
private MockMvc mockMvc;
@Test
public void isPoDuplicateTest() throws Exception {
this.mockMvc.perform(get("/api/isSoDuplicate/123456/123456")
.header(authHeaderName, jwtToken))
.andDo(print())
.andExpect(status().isOk())
.andDo(mvcResult -> {
String responseStr =
mvcResult.getResponse().getContentAsString();
assertTrue("Expecting result to be \"true\" or \"false\".
Instead received: "+responseStr,
responseStr.equalsIgnoreCase("true") ||
responseStr.equalsIgnoreCase("false"));
});
}
}
我的表情如下:
@Aspect
@Component
public class Helper {
@Around("@annotation(com.AuditLogger)")
public Object doAuditLog(ProceedingJoinPoint point) throws Throwable {
Object toReturn = null;
try {
toReturn = point.proceed();
} catch (Throwable throwable) {
throw throwable;
} finally {
cpLocationAudit.write(keysMap);
}
return toReturn;
}
}
现在,如果我手动进入/api/isSoDuplicate/123456/123456
,我将得到'true / false',但是如果尝试通过上述测试运行它,则会得到空内容。
此外,如果我删除了应该触发此建议的@AuditLogger
批注,则测试通过(返回正确的布尔值)。
所以本能是某些东西没有被正确地嘲笑。
任何帮助都将是惊人的。如果需要更多代码,我会很乐意提供。 谢谢。