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

릴리코님의 프로필 이미지
릴리코

작성한 질문수

따라하며 배우는 리액트 테스트 [2023.11 업데이트]

옵션 가격을 위한 테스트 구현

2가지 질문사항입니다!

작성

·

252

0

1. findByRole의 name

checkbox를 findByRole로 찾아올 때

Insurance라는 이름으로 어떻게 찾는지 궁금합니다.

const insuranceCheckbox = await screen.findByRole('checkbox', {
        name: 'Insurance'
    });

 

Options.js 파일에서는


   <input
     type="checkbox"
     id={`${name} option`}
     onChange={(event) => {
       updateItemCount(name, event.target.checked ? 1 : 0);
     }}
    />{' '}
    <label htmlFor={`${name} option`}>{name}</label>

 

id와 htmlFor에는 Insurance option이라고 들어가는데.. 이해가 잘 되지 않습니다..!

 

 

2. userEvent.clear() 함수

저는 userEvent.clear(HTML객체) 함수가 HTML객체(보통 input, textarea)을 초기화해주는 거라고 이해했는데요!

 

spinbutton은 type을 하기전에 clear를 하는데,

왜 checkbox는 click하기 전에 clear를 하지 않는건가요???

 

type과 click의 차이 인지 아니면 checkbox와 spinbutton의 차이인지 아니면 그 외의 이유가 있는지 궁금합니다!

답변 2

0

릴리코님의 프로필 이미지
릴리코
질문자

답변 감사합니다~!

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 가은님

우선 첫번째는요
공식 사이트에 보면
https://testing-library.com/docs/queries/byrole/

You can query the returned element(s) by their accessible name or description. The accessible name is for simple cases equal to e.g. the label of a form element, or the text content of a button, or the value of the aria-label attribute.

text centent도 된다고 나와있습니다.
그러기에 input에 텍스트가 되는 Insurance도 가능 합니다.

두번째는 checkbox에도 clear() 해주셔도 됩니다.
https://testing-library.com/docs/ecosystem-user-event/#clearelement

clear(element)

Selects the text inside an <input> or <textarea> and deletes it.

clear()는 요소안에 있는 텍스트를 지우는 것이기 때문에
checkbox이든 spinbutton이든 다 사용할 수 있습니다.
하지만 현재 만들고 있는 앱에서 clear()를 넣지않아도 에러가 나지 않기 때문에 사용하지 않았습니다 ~
감사합니다.

릴리코님의 프로필 이미지
릴리코

작성한 질문수

질문하기