게이미피케이션 NFT 컬렉션 구조 분석 문서
이름·레벨·토큰 커런시 모듈을 가진 게이미피케이션 NFT 컬렉션의 컨트랙트 패턴과 함정을 정리한 관찰자 시점 기술 문서
이 프로젝트에서의 truffle-assertions 활용
Hardhat 환경에서 병행 사용하는 테스트 assert 헬퍼
프로젝트 1개에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.
스마트 컨트랙트 테스트에서 이벤트 발생과 revert 여부를 손쉽게 검증하는 Mocha/Truffle용 assert 확장 라이브러리
truffle-assertions는 Truffle이나 Hardhat 같은 이더리움 개발 환경에서 작성하는 JavaScript 테스트에 사용되는 assertion 헬퍼 라이브러리다. 스마트 컨트랙트가 emit한 이벤트를 검증하거나, 특정 조건에서 트랜잭션이 revert되는지를 확인하는 작업은 트랜잭션 영수증(receipt)의 로그를 직접 파싱해야 해서 번거로운데, 이를 간단한 함수 호출 몇 줄로 대체할 수 있게 해준다. 원래는 Truffle 테스트 스위트를 겨냥해 만들어졌지만 트랜잭션 영수증 구조만 호환되면 Hardhat 등 다른 환경에서도 함께 사용할 수 있다.
transfer 호출로 발생한 Transfer 이벤트의 인자를 검증하고, 잘못된 값 호출 시 지정한 메시지로 revert되는지 확인한다.
const truffleAssert = require('truffle-assertions');
it('should emit Transfer event and revert on invalid amount', async () => {
const instance = await MyToken.deployed();
const result = await instance.transfer(recipient, 100);
truffleAssert.eventEmitted(result, 'Transfer', (ev) => {
return ev.to === recipient && ev.value.toNumber() === 100;
});
await truffleAssert.reverts(
instance.transfer(recipient, 0),
'amount must be greater than zero'
);
});위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.
위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.
이름·레벨·토큰 커런시 모듈을 가진 게이미피케이션 NFT 컬렉션의 컨트랙트 패턴과 함정을 정리한 관찰자 시점 기술 문서
이 프로젝트에서의 truffle-assertions 활용
Hardhat 환경에서 병행 사용하는 테스트 assert 헬퍼
위 프로젝트들에서 같이 쓰인 다른 기술입니다.