由于Aspect,Spring Boot集成测试空结果主体

时间:2018-10-04 09:17:53

标签: spring spring-boot junit integration-testing aspectj

我想在端点上运行一些集成测试。一切都按预期进行,直到我向业务/服务层添加了外观。完成后,测试结果(内容主体)始终为空。

以下是测试:

@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批注,则测试通过(返回正确的布尔值)。

所以本能是某些东西没有被正确地嘲笑。

任何帮助都将是惊人的。如果需要更多代码,我会很乐意提供。 谢谢。

0 个答案:

没有答案