일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- nest.js설명
- ethers websocket
- 프록시배포구조
- ambiguous function description
- SBT표준
- ethers v6
- 러스트 기초
- 스마트컨트렉트프록시
- 오블완
- 컨트렉트 동일한 함수이름 호출
- rust 기초
- 러스트기초
- ethers
- Vue
- 컨트렉트 배포 자동화
- git rebase
- ethers type
- 머신러닝기초
- vue기초
- 스마트컨트렉트 함수이름 중복 호출
- 체인의정석
- 티스토리챌린지
- chainlink 설명
- Vue.js
- multicall
- 러스트 기초 학습
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트테스트
- ethers typescript
Archives
- Today
- Total
체인의정석
ethers+hardhat) 스마트컨트렉트에서 uint256 배열이 리턴되는 경우의 테스트 코드 본문
728x90
반응형
새로 작성된 멀티시그의 테스트 코드 커버리지를 100% 까지 올리기 위해서 추가적인 테스트 코드를 작성하였다.
지난번과 다르게 이번엔 숫자형의 배열을 리턴해와서 값을 비교하는 것이 생겼는데
이런 배열의 경우 deep.equal을 사용했던 기억이 있어 비교해 보았다.
it("Should return right Function status after submitTransaction is submitted", async () => {
expect(await ContractName.fuctionName(input)).to.deep.equal([1]);
})
//스마트컨트렉트의 결과 값 : returns (uint256[] memory)
그러나 배열안의 숫자가 Bignumber 형태로 리턴되어서 오류가 났다.
AssertionError: expected [ BigNumber { value: "1" } ] to deeply equal [ 1 ]
+ expected - actual
처음에는 비교하는 값 자체에서 값을 뽑아내려고
로그를 찍어가며 값을 짚어내려 했지만 undefined 만 나오는걸 확인할 수 있었다.
https://github.com/OpenZeppelin/chai-bn/pull/7
키워드를 잡고 검색한 결과 한 해결방안을 발견했다.
결국 bigNumber 형태로 비교하는 값을 지정해주면 오류가 해결된다는 말 같다.
https://docs.ethers.io/v5/api/utils/bignumber/#BigNumber
ethers 문서를 찾아보니 문법이 보여서 테스트코드를 다음과 같이 수정햇더니 통과하였다.
it("Should return right Function status after submitTransaction is submitted", async () => {
expect(await ContractName.fuctionName(input)).to.deep.equal([(ethers.BigNumber.from(1))]);
})
교훈
이런걸 보니 결과 값에서 오류가 날 경우 이걸 ethers 모듈에서 찾아서 결과값 또한 맞는 자료 형태로 바꾸어 준 후 비교하면 되겠구나 싶은 생각이 들었다.
"스마트컨트렉트 테스트시 나오는 결과값이 데이터 타입때문에 오류가 나는 경우 ethers모듈을 사용해서 같은 형태로 비교해보기"
PS) 구조체에 대한 비교의 경우도 마찬가지로 구조체를 가져와서 거기서 비교할 값을 하나하나 지정해서 각각 비교를 하면 테스트 코드로 다 결과값에 대한 비교가 가능할거 같다.
728x90
반응형
'블록체인 > Ethers & web3' 카테고리의 다른 글
DocstringParsingError: Documented parameter "" not found in the parameter list of the function. 오류 해결 (0) | 2022.06.22 |
---|---|
상용 서비스에 들어가는 Smart Contract 테스트 코드 작성 팁 (0) | 2022.05.30 |
Truffle에서 migration 사용하기 (0) | 2022.05.19 |
Ganche CLI 사용하기 (0) | 2022.05.19 |
스마트컨트렉트 UML 자동생성 (0) | 2022.05.19 |
Comments