Klaytn 개발할 때 테스트 환경

안녕하세요
BSC에서 개발을 하다가 클레이튼에도 관심을 갖고 개발환경을 세팅 중에 있습니다.

클레이튼에서 개발할 때 컨트랙트 테스트를 보통 어떻게 진행하는지 궁금합니다.

BSC에서 개발할 때는 메인넷을 로컬에 포크해서 개발한 컨트랙트를 배포해보고 테스트해봤었는데요,
클레이튼에서는 이런 과정이 잘 안되는것 같더라구요…

바오밥 테스트넷이 있긴하지만 테스트용으로 받을 수 있는 클레이도 한정되어있고, 컨트랙트 수정할 때마다 매번 테스트넷에 배포하는 것도 매번 주소가 바뀌기 때문에 개발하기가 수월하지 않습니다.

또한 메인넷에 배포되어있는 다른 프로젝트(클레이스왑 등)의 컨트랙트와 잘 연동되는지도 테스트 해봐야하기 때문에 테스트넷에서만으로는 부족한 것 같습니다.

아직 제가 개발환경에 익숙하지 않아서 잘못 알고 있을 수도 있습니다.
보통 컨트랙트 정식 배포하기 전 테스트를 어떤 식으로 진행하는지 질문드립니다.

배포환경은 어떤것을 사용하시는지요?

현재 테스트용 클레이는 150개로 총 30배 증가해서, 사용하시는데 크게 문제 없으리라 생각합니다.
컨트랙트 수정의 경우, Upgradable contract 방식로 Proxy contract 를 이용해 테스트하시면 컨트랙트 주소를 유지하는 방법으로 나쁘지 않으리라 생각되고요.

저는 보통 테스트는 https://ide.klaytn.com 을 이용해 baobab에서 진행합니다. 바로 배포해서 직접 인터페이싱 할수 있어서 상당히 유용한것 같습니다.

그 외에는, truffle 이나 hardhat을 이용하신다면, deploy할때 만들어지는 json파일에서 contract address를 추출해서 테스트하는 스크립트를 짜시는 것도 방법일것 같습니다. 저도 여러개 컨트랙트를 동시 발행해서 테스트 하는 경우에는 이런 방법을 씁니다. 이 경우, 컨트랙트중 일부만 새로 배포해야하는 경우, build 파일이 존재하는지 체크해서, 존재하는 경우에는 주소를 이용해 instance를 생성하고, 존재하지 않는 경우에는 디플로이 하는 형태로 해서 테스트가 가능합니다.

외부 컨트랙트와 상호작용하는 것을 테스트 하는 방법은, 해당 컨트랙트를 일단 소스코드를 이용해 직접 디플로이 하시거나, 테스트넷에 디플로이된 다른 팀의 컨트랙트주소와 ABI를 요청해서 얻으시는 방법도 있습니다.

답변 도움되셨길 바랍니다. 감사합니다.

네 답변 감사드립니다.

배포환경은 주로 Hardhat을 쓰고 있습니다.
자체 개발한 컨트랙트 간의 테스트는 문제 없을 것 같지만 외부 컨트랙트와의 상호작용 테스트는 조금 번거롭지만 말씀하신 방법대로 해봐야하겠습니다.

감사합니다.