인프런 커뮤니티 질문&답변

김연수님의 프로필 이미지

작성한 질문수

2시간으로 끝내는 프론트엔드 테스트 기본기

recoil을 테스트하는 방법

안녕하세요. 질문 있습니다.

작성

·

310

2

섹션3 recoil을 테스트하는 방법 3:50에
cy.url().should('include','/');
를 통해서 root page로 잘 이동하는지 확인한다고 하신부분에서,

'/'는 어떤 페이지에서든 include가 되어 테스트가 통과될것 같은데 혹시 rootpage를 검증하기위한 다른 방법은 없을까요?

답변 3

3

강병진님의 프로필 이미지
강병진
지식공유자

연수님 안녕하세요! 말씀하신 것처럼 그런 문제가 발생할 수 있겠네요. 심지어 url에도 http://, https:/// 가 포함되어 있어서 문제가 발생할 수 있을 것 같습니다. 저도 자료를 수정해야겠네요.

이런 경우에는 pathname을 활용해야 하는데요, 아래와 같이 수정해서 테스트하시면 됩니다.

cy.url().should((url) => {
  const currentUrl = new URL(url);
  expect(currentUrl.pathname).to.equal("/");
});

좋은 질문 다시한번 감사드립니다!

위 코드에서 사용되는 expect는

import { expect } from "chai";

가 필요한건가요 ?

강병진님의 프로필 이미지
강병진
지식공유자

필요없습니다!

ts상에서 오류가 나서.. chai에서 import해야 사라지더라구요.. 제가 조금 다르게 하다가 그랬나 보네요..

강병진님의 프로필 이미지
강병진
지식공유자

tsconfig.json 설정을 한번 확인해보시면 좋을 것 같습니다!

"include" 에 cypress로 작성한 테스트코드들이 포함되어 있는지 확인해보세요~

2

저 같은 경우에는 to.equal 메서드를 쓸 때 to 타입이 없다고 오류가 떠서 to.equal 말고 다른 방법을 찾다보니 cy.location()에 매개변수로 pathname을 주면 pathname 부분만 얻어올 수 있는걸 알게됐습니다. 그래서 expect 없이 should로 비교가 가능했습니다

cy.location("pathname").should("eq", "/");
강병진님의 프로필 이미지
강병진
지식공유자

감사합니다 정우님!

1

김연수님의 프로필 이미지
김연수
질문자

감사합니다 :)