Я бы хотел провести несколько интеграционных тестов на моих конечных точках.Все работает, как и ожидалось, пока я не добавлю аспект в свой бизнес / сервисный уровень.Когда это сделано, результат (тело содержимого) теста всегда пуст.
Ниже приводится тест:
@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
аннотация, которая должна вызвать этот совет, тесты пройдены (верните правильное логическое значение).
Таким образом, инстинкт заключается в том, что что-то не правильно насмехается.
Любая помощь будет потрясающей.Если потребуется больше кода, я с радостью предоставлю.Спасибо.