체인의정석

hardhat 사용법 정리 04- 테스트코드 작성하기 2 본문

블록체인/Ethers & web3

hardhat 사용법 정리 04- 테스트코드 작성하기 2

체인의정석 2022. 1. 19. 10:52
728x90
반응형

Require과 Assert를 사용하는 방법

1. 함수가 실패해야 할 경우 실패를 하게 만든다.

2. 배후에 실행되는 것을 확실하게 하기 위하여 이전에는 실행이 되지 않게 require를 사용해야 한다.

3. 자신이나, 테스터에게 함수가 실패할 수 있을 경우를 상기시키기 위하여 사용한다.

 

require 형태의 실패를 유발하기 위하여 DRY를 지키는 것이 중요하다. 그리고 해피케이스의 최소 조건에서 멀어진 단위테스트를 하면 fail이 일어나게 한다. 

 

또한 각 함수의 유니크한 require 메세지를 통하여 왜 실패하였는지를 밝히는 것이 중요하다.

 

테스트 Modifier에 대하여

require 체크와 유사하게 모든 modifier들은 테스트를 해야 한다. 예를 들어 submitProposal 단위 테스트는 onlyDelegate modifier를 체크하도록 하고 있다. 이러한 테스트 제한자는 internal을 사용하여 실패하는 선택지에서 실패가 발생하는지를 살펴봐야한다.

모든 경로의 코드를 테스트하기

if (a && b)와 같이 분기가 있을 경우 a 케이스와 b케이스를 분리하여 모두 테스트를 진행한다.

 

로직에 따른 테스트 과정

다음과 같이 로직에 따른 테스트 과정 설계가 중요하다. 2년전 작업을 했을때도 정말 오랜기간 작업한 부분중에 하나이다.

  1. constructor
  2. submitProposal
  3. submitVote
  4. processProposal
  5. ragequit
  6. abort
  7. updateDelegateKey
  8. more complex tests (multi-member/proposal)

The unit tests for each function are organized as follows:

  1. happy cases
  2. trigger requires
  3. check modifiers
  4. edge cases

 

출저 : https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide

 

GitHub - MolochVentures/moloch: 👹 Moloch whose mind is pure machinery! Moloch whose blood is running money!

👹 Moloch whose mind is pure machinery! Moloch whose blood is running money! - GitHub - MolochVentures/moloch: 👹 Moloch whose mind is pure machinery! Moloch whose blood is running money!

github.com

 

 

 

728x90
반응형
Comments