인프런 커뮤니티 질문&답변
테스트 할 때 적는 //given, //when, //then에 대해서 질문드립니다.
해결된 질문
작성
·
251
1
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
영상의 10분 근처에서 영한님께서
save와 findAll 테스트를 만들어주셨는데,
save의 given에서는 인스턴스를 하나 생성해서
when에서 인메모리 자료구조(가상 데이터베이스)에 저장하며
then에서 member객체를 직접 찾아오게 되었습니다.
그후 assertion을 진행하였습니다.
findAll의 given에서 역시 인스턴스를 생성하였는데,
이번엔 가상 데이터베이스에 저장하는 부분까지 given으로 넣게 되었습니다.
그리고 save에서는 assertion을 하기 위한 결과를 then에서 만들었었지만, findAll에서는 when에 이 부분이 들어가게 됩니다.
그리고 then에는 오직 assertion 구문만이 들어가게 됩니다.
given은 주어진 리소스, when은 주어진 리소스로 이루어진 행위,
테스트 하고자 하는 행위의 결과값을 구하는 과정,
then은 그 결과 값으로 맞는지 테스트 하는 과정이라고 이해 했었는데,
제가 이해한 대로라면, findAll의 when 부분에 가상 데이터베이스에 저장하는 과정 또한 들어가야 한다고 생각했습니다.
영한님께서 크게 생각 안하시고 그냥 작성하신건지 아니면,
혹시 제가 잘못 이해하고 있는 부분이 있는건지 알고싶습니다.
감사합니다.
답변 1
1
안녕하세요. 김성규님, 공식 서포터즈 David입니다.
given은 주어진 상황입니다.
데이터베이스에 회원 2명이 저장된 상황(회원 2명을 생성, 저장)에서/ 테스트할 행위 findAll을 실행했고 / 예상되는 결과로 2명을 가지고 왔는지 검증하고 있습니다.
따라서, given절에 회원 2명의 생성과 저장 명령문을 배치하는 게 적절합니다.
아래 글을 참고해주세요.
https://martinfowler.com/bliki/GivenWhenThen.html
Feature: User trades stocks Scenario: User requests a sell before close of trading Given I have 100 shares of MSFT stock And I have 150 shares of APPL stock And the time is before close of trading When I ask to sell 20 shares of MSFT stock Then I should have 80 shares of MSFT stock And I should have 150 shares of APPL stock And a sell order for 20 shares of MSFT stock should have been executed
감사합니다.





감사합니다. 잘못 이해하고 있었던 것 같습니다.