Trong quá trình phát triển smart contract, bạn sẽ muốn kiểm tra xem các chức năng có hoạt động đúng như mong đợi hay không và hơn thế nữa, contract có hoạt động một cách an toàn hay không. NEAR đã phát triển các công cụ để kiểm thử đáp ứng những nhu cầu trên cho bạn.
Về cơ bản, sẽ có hai loại kiểm thử bạn có thể thực hiện:
Unit Tests để test các tính năng riêng lẻ, được viết bằng chính ngôn ngữ lập trình của smart contract và thực thi tại local.
Integration Tests để kiểm tra cách smart contract của bạn hoạt động trong môi trường thực tế. Bạn có thể viết integration tests với Rust hoặc Javascript (Typescript). Integrations test thường sẽ thực hiện trong Sandbox hoặc mạng NEAR testnet.
Để chắc chắn smart contract có thể hoạt động tốt trong môi trường thực tế, LNC khuyên bạn nên thực hiện cả hai loại tests. Mỗi loại đều phù hợp để phát hiện ra các loại lỗi khác nhau trong quá trình smart contract hoạt động.
Kiểm thử smart contract
Quay trở lại với counter smart contract mà LNC đã hướng dẫn bạn xây dựng trong phần trước. Trong bài này, LNC sẽ hướng dẫn bạn cách viết tests cho chính contract này. Chúng ta cùng bắt đầu nhé.
Bước 1: Review cấu hình và setup ban đầu cho việc kiểm thử
Ở đây, LNC đã cấu hình sẵn cho việc kiểm thử. Chúng ta cùng duyệt qua một vài thông tin chính:
test khai báo một test module với Worker sandbox và lưu trữ 1 danh sách accounts sẽ thực hiện cho việc test trong context.
Chúng ta sẽ có test.berforeEach() thực hiện trước khi bắt đầu test và test.afterEach() thực hiện sau khi test.
Bạn sẽ cần chú ý nhiều hơn đến test.beforeEach(). Ở đây, LNC khai báo init Worker, tạo sub account từ root và deploy contract lên account này. Việc thực hiện sẽ giống như trong môi trường testnet, mainnet, vì vậy bạn có thể biết chính xác smart contract của mình hoạt động như nào trên thực tế.
Bước 2: Viết test các chức năng
Lấy giá trị ban đầu của number
Contract đánh dấu get_number là view function, vì vậy ở đây chúng ta gọi view từ contract.
Tăng và giảm giá trị của number
Với increase_number, decrease_number, bạn cần thực hiện dùng một account để call đến contract.
Test người dùng deposit NEAR vào contract
Test private function
Do private function chỉ cho phép chính tài khoản lưu contract gọi. Vì vậy ở đây chúng ta thay đổi từ root sang contract.
Toàn bộ souce code cho phần tests bạn có thể kiểm tra [ ở đây ]
Bước 3. Thực hiện kiểm thử
Thực hiện test với câu lệnh
$ npm run build:contract && npm run test
Và kết quả:
Hoạt động bổ sung
Để hiểu rõ hơn về tests bạn có thể thực hiện thêm các yêu cầu sau:
Viết thêm tests với các trường hợp xảy ra lỗi trong contract
Đọc hiểu thêm về module tests trong các contract đã đọc ở bài 2 của NEAR Certificated Developer level 1
Viết thêm unit tests, integration tests cho các contract bạn đã đọc trong bài 2 của NEAR Certificated Developer level 1
Trong quá trình phát triển smart contract, bạn sẽ muốn kiểm tra xem các chức năng có hoạt động đúng như mong đợi hay không và hơn thế nữa, contract có hoạt động một cách an toàn hay không. NEAR đã phát triển các công cụ để kiểm thử đáp ứng những nhu cầu trên cho bạn.
Về cơ bản, sẽ có hai loại kiểm thử bạn có thể thực hiện:
Để chắc chắn smart contract có thể hoạt động tốt trong môi trường thực tế, LNC khuyên bạn nên thực hiện cả hai loại tests. Mỗi loại đều phù hợp để phát hiện ra các loại lỗi khác nhau trong quá trình smart contract hoạt động.
Kiểm thử smart contract
Quay trở lại với counter smart contract mà LNC đã hướng dẫn bạn xây dựng trong phần trước. Trong bài này, LNC sẽ hướng dẫn bạn cách viết tests cho chính contract này. Chúng ta cùng bắt đầu nhé.
Bước 1: Review cấu hình và setup ban đầu cho việc kiểm thử
Bạn truy cập file /integration-tests/src/main.ava.ts
Ở đây, LNC đã cấu hình sẵn cho việc kiểm thử. Chúng ta cùng duyệt qua một vài thông tin chính:
Bước 2: Viết test các chức năng
Contract đánh dấu get_number là view function, vì vậy ở đây chúng ta gọi view từ contract.
Với increase_number, decrease_number, bạn cần thực hiện dùng một account để call đến contract.
Do private function chỉ cho phép chính tài khoản lưu contract gọi. Vì vậy ở đây chúng ta thay đổi từ root sang contract.
Toàn bộ souce code cho phần tests bạn có thể kiểm tra [ ở đây ]
Bước 3. Thực hiện kiểm thử
Thực hiện test với câu lệnh
Và kết quả:
Hoạt động bổ sung
Để hiểu rõ hơn về tests bạn có thể thực hiện thêm các yêu cầu sau:
Tài nguyên