Lập trình smart contract: Phần 6 — Hoàn thiện smart contracts và test case
Sau khi chúng ta phát triển khung của smart contract, mặc dù smart contracts đã thành hình nhưng để sử dụng được cần có một quá trình hoàn thiện kỹ càng hơn. Hôm nay chúng ta tiếp tục đào sâu hoàn thiện smart contract. Viết test cases để cover thất cả các trường hợp có thể của part time contract.
Viết thêm modifier
Modifier cho chúng ta những phương thức phát hiện sớm và valid input của smart contract. Ứng với mỗi function thường sẽ phát sinh ra rất nhiều modifier kèm theo. Ngoài ra khi làm việc với smart contract chúng ta còn phải để ý tới anonymous actor, hay những khách không mời trong hệ thống, nếu không tính đến flow của chương trình có thể bị manipulate.
Như bạn thấy các modifier rất dễ hiểu, mình check các possible case nhằm giúp đúng người trigger vào đúng thời điểm. Tất cả modifer được viết sao cho phù hợ với flow của project do mình xác định ngay từ đầu.
Tìm hiểu thay đổi mã nguồn contract
Cover toàn bộ smart contract bằng test cases
Autonomous test rất quan trọng, nó giúp các team tăng khả năng làm việc cũng như rút ngắn release cycle nhưng không làm giảm chất lượng của code. Nhưng trước khi viết test cases chúng ta cần xem lại flow của chương trình.
Chúng ta phải xây dựng test cases cho mỗi function, và ngoài ra nên xây dựng cho mỗi decision (các khối màu cam trong flowchart).
Các bạn có thể chạy thử các test case mà mình viết, nếu các bạn làm đúng như trong README thì đây là kết quả.
Trong các test case của mình, tại các vị trí quan trọng, mình luôn kiểm tra với anonymous actor và những case này mình mong muốn lỗi xẩy ra. Việc không có test case cho anonymous actor sẽ rất nguy hiểm.
Xây dựng interfaces
Để smat contract Part Time có thể được gọi từ bên ngoài, các bạn cần phải tạo Interface, việc này có thể được hoàn tất dễ dàng bằng cách sữ dụng package này (package mình phát triển vì mình rất lười update smart contract’s interface).
What’s next?
Source code các bạn có thể xem ở đây: https://github.com/chiro-hiro/part-time-dapp.
Các bạn nên xem kỹ các test case mình viết, trong phần 7 mình sẽ tập trung vào phần front-end cho dApp.
Cảm ơn!.