inflearn logo
강의

講義

知識共有

TDD開発方法論を活用したReact Nativeアプリの開発

ToDoItem Component

onCompleted와 onDeleted를 따로 describe로 나누시는 이유가 궁금합니다.

解決済みの質問

374

pdj102110220

投稿した質問数 4

1

안녕하세요. 궁금한 점이 있어 질문 올립니다.

 TodoItem.spec.js 에서

 onCompleted callback 하는 단위 테스트와

 onDeleted callback 하는 단위 테스트를 각각 describe 해서 그룹테스트로 나누시던데, 그 이유가 궁금합니다.

 

beforeEach(() => {
// 테스트 진행 이전 호출
props = {
item: {
text: 'first todo',
done: false
},
index: 0,
onCompleted: jest.fn(),
onDeleted: jest.fn()
}

wrapper = shallow(<TodoItem {...props}></TodoItem>);
wrapper.find('Button').at(0).simulate('press');
wrapper.find('Button').at(1).simulate('press');
// wrapper.find('Button').prop('onPress')();
})

it('should call the onCompleted callback with index', () => {
expect(props.onCompleted).toHaveBeenCalledTimes(1);
expect(props.onCompleted).toHaveBeenCalledWith(props.index);
})

it('should call the onDeleted callback with index', () => {
expect(props.onDeleted).toHaveBeenCalledTimes(1);
expect(props.onDeleted).toHaveBeenCalledWith(props.index);
})

왜 위와 같이 같은 describe 그룹테스트 안에 안두시나요?

개념적으로 제가 부족한건 아닌가 싶어서 질문드렸습니다.

react-native tdd react javascript

回答 2

1

huedonghopark0024

우선 제가 각각을 describe 그룹으로 나눈것은 각각의 callback 에 대한 다양한 테스트를 염두에 두고 설계를 하였기 때문입니다. 결과적으로 각 그룹에 하나의 테스트만 진행되었기 때문에 그룹화 한 이유가 사라져버려서 혼란을 드린것 같네요. 질문해주신것처럼, 하나의 describe 그룹으로 묶으도 상관 없을것 같습니다.

테스트를 설계하실때 describe / it 을 프로그래밍이라고 생각하지 않고, 수도코드를 작성한다고 생각하시고 설계하시면 좋습니다. 

예를들어, 공이라는 클래스를 테스트한다고 가정하면,

공을 설명한다(describe 공)

    공의 동작을 설명한다(describe 공의동작)          

        공은 중력의 법칙을 따른다(it should follow the rule of gravity)

        공은 관성의 법칙을 따른다(it should follow the rule of inertia)

    공의 외관을 설명한다(describe 공의 외관)

        공은 둥글다(it should have the shape of a sphere)

위와 같이 설계를 할 수도 있지만, 중력의 법칙에 여러 다른 it 구문을 포함시키려면 이를 다시 describe 블럭으로 분리시킬 수도 있을것입니다.

대답이 되었으면 좋겠네요 ^^

0

pdj102110220

감사합니다. 상세히 설명해주신 덕분에 의문이 싹 가셨습니다. 감사합니다 (_ _)

useEffect와 lifecycle문의

0

6

1

cd 다음에 어떻게 자연스럽게 문자가 써지죠?

0

11

1

클로드코드에 적용할 하네스? 툴? 추천 부탁드립니다.

0

12

0

14강 GIT 설치후 ~ config 명령어 입력이 안돼요

0

14

1

161강 자료 파일 안에 내용이 없네요.

0

17

1

/ide 명령어 실행 오류

0

15

1

beforeEach 코드가 작동하지 않습니다.

0

396

1

저 또한 TextInput을 찾지 못합니다..

0

259

1

enzyme 테스트 과정에서 오류가 발생했습니다.

0

273

1

ios 폴더 아래에 build 폴더가 없고 Pods폴더가 있습니다.

2

830

7

detox test

1

537

2

TextInput을 찾지 못합니다.

1

407

3

functional component

1

322

1

cocoapods

1

399

2

테스트 케이스의 작성 범위

1

373

1

detox config 질문

1

394

2

앞으로 작업에 강좌가 도움이 많이 되겠습니다

0

241

0

코드 커버리지 툴은 어떤걸 사용하시나요?

1

552

1

No tests found, exiting with code 1 에러

1

2154

2

enzyme를 사용하는데 있어서 문제가 있습니다.

1

406

7

enzyme?

1

761

13

jest - type error

1

308

1

jest - type error

1

463

4

영상이 안보여요 아래와 같이요 . 3시간 텀을 두고 다시 접속해도 똑같아요.

1

259

1