Пустой результат теста интеграции интеграции Spring Boot из-за аспекта - PullRequest
0 голосов
/ 04 октября 2018

Я бы хотел провести несколько интеграционных тестов на моих конечных точках.Все работает, как и ожидалось, пока я не добавлю аспект в свой бизнес / сервисный уровень.Когда это сделано, результат (тело содержимого) теста всегда пуст.

Ниже приводится тест:

@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 аннотация, которая должна вызвать этот совет, тесты пройдены (верните правильное логическое значение).

Таким образом, инстинкт заключается в том, что что-то не правильно насмехается.

Любая помощь будет потрясающей.Если потребуется больше кода, я с радостью предоставлю.Спасибо.

...