Facts
- cypress e2e 테스트 작성중... 특정 응답에 대한 케이스를 테스트하는 중이라 intercept 활용중
Feelings
- 연휴동안 엄청 쉬고 다시 시작하려니 힘들다. 하기 힘든 날에는 30분이라도 들여다 봐야지
Findings
- intercept 가 모든 요청에 대해 적용되는게 아니고, 첫번째 요청에만 적용되는 현상이 있음 => intercept 를 위치시키는 순서의 문제, axios interceptor 랑 헷갈렸다. intercept 의 순서가 중요함..! 이 부분만 따로 실행시키는 initialize 메서드가 있으면 좋겠군.
Cypress.Commands.add('migrationLogin', (email, password) => {
// 이 구문이 실제 api 요청을 보내게 만드는 로직보다 전에 실행되어 있어야 한다.
cy.intercept(
{ method: 'POST', pathname: '**/auth/signin' },
{
statusCode: 201,
body: {
// ...
},
}
).as('migrationLogin');
cy.login(email, password);
cy.wait('@migrationLogin');
});
- cypress 는 보안상의 이유로 같은 도메인에 대해서만 테스트를 진행할 수 있다. 따라서 외부 도메인으로 리다이렉트 되는 경우, 리다이렉트 여부를 파악하기 위해서는 해당 request 를 검증하는 방식으로 접근해야한다.
cy.intercept(
'POST',
'리다이렉트 될 주소'
).as('redirect');
cy.wait('@redirect')
.its('request.body') // 혹은 request.url 로 도메인을 확인할 수 있음
.should('include', '리다이렉트 하면서 보낼 데이터');
Feedback
- action 에 대한 repository 를 만들어서 테스트 로직을 구성하는 방식이 상당히 이해하기 쉽고 좋다. 링크
- 테스트 로직 이외에 해야할게 많아서 진도를 많이 못나가고 있음... 아무래도 외부 api 연동된 부분에 대한 테스트 로직이다 보니 더 그러한 것 같다.
Future Action
- 제대로 동작할 수 있게 모킹하자
'TIL' 카테고리의 다른 글
[TIL] 2023-1004 (0) | 2023.10.05 |
---|---|
[TIL] 2023-1003 (0) | 2023.10.04 |
[TIL] 2023-0926 테스트 (0) | 2023.09.27 |
[TIL] 2023-0925 점진적 과부하 (4) | 2023.09.26 |
[TIL] 2023-0924 : 유연하고 확장되기 쉽고 교체되기 쉬운 코드를 작성하자. (0) | 2023.09.25 |