تست نویسی یکی از اجزای کلیدی در توسعه قراردادهای هوشمند در بلاک‌چین است. با استفاده از فریم‌ورک‌هایی مانند سالیدیتی و ابزارهایی مانند Chai، توسعه‌دهندگان می‌توانند اطمینان حاصل کنند که کد نوشته شده به درستی کار می‌کند. در این مقاله، به آموزش تست نویسی با Chai در سالیدیتی خواهیم پرداخت.

مراحل اولیه

برای شروع کار با تست نویسی در سالیدیتی و Chai، ابتدا نیاز داریم که ابزارهای لازم را نصب کنیم. فرض می‌کنیم که از Truffle به عنوان فریم‌ورک توسعه استفاده می‌کنید.

نصب Truffle و Chai

در ابتدا، شما باید Truffle و Chai را در پروژه خود نصب کنید:

npm install -g truffle
npm install --save-dev chai

بعد از نصب، شما می‌توانید یک پروژه جدید Truffle ایجاد کرده و قرارداد هوشمند خود را بنویسید.

نوشتن قرارداد هوشمند

در ادامه، یک قرارداد ساده به نام SimpleStorage.sol می‌نویسیم که یکی از متا‌دهای آن مقدار عددی را ذخیره می‌کند:

// SPDX-License-Identifier: MIT
pragma solidity ^.8.;

contract SimpleStorage {
    uint256 private value;

    function setValue(uint256 _value) public {
        value = _value;
    }

    function getValue() public view returns (uint256) {
        return value;
    }
}

این قرارداد شامل دو تابع است: setValue برای تنظیم مقدار و getValue برای دریافت آن.

آموزش سالیدیتی

نوشتن تست‌ها با Chai

حالا که قرارداد خود را نوشتید، باید تست‌هایی برای اطمینان از عملکرد صحیح آن بنویسید. برای این کار، در پوشه test یک فایل جدید ایجاد کنید، به عنوان مثال SimpleStorage.test.js و موارد زیر را در آن بگنجانید:

const SimpleStorage = artifacts.require("SimpleStorage");
const { expect } = require("chai");

contract("SimpleStorage", accounts => {
    let simpleStorage;

    before(async () => {
        simpleStorage = await SimpleStorage.new();
    });

    describe("setValue and getValue", () => {
        it("should set the value correctly", async () => {
            await simpleStorage.setValue(10);
            const value = await simpleStorage.getValue();
            expect(value.toString()).to.equal('10');
        });
    });
});

توضیح کد

در کد بالا:

  1. ما از artifacts.require برای بارگذاری قرارداد استفاده می‌کنیم.
  2. before به طور پیش‌فرض قرارداد را مستقر می‌کند.
  3. describe برای گروه‌بندی تست‌های مرتبط استفاده می‌شود.
  4. it برای نوشتن هر تست خاص است که می‌گوید آیا مقدار تنظیم شده درست است یا نه.
  5. expect از Chai برای بررسی ارزش‌ها استفاده می‌شود.

اجرای تست‌ها

برای اجرای تست‌ها، کافی است در خط فرمان دستور زیر را اجرا کنید:

truffle test

پس از اجرای این دستور، Truffle تست‌های نوشته شده را اجرا کرده و نتیجه را به شما نمایش خواهد داد.

نتیجه‌ گیری

تست نویسی با Chai در سالیدیتی یک روش مؤثر برای اطمینان از صحت کدهای نوشته شده است. با تست دقیق قراردادهای هوشمند خود، می‌توانید از بروز مشکلات در زمان اجرا جلوگیری کنید و در نهایت امنیت و کارایی پروژه خود را افزایش دهید. به همین سادگی می‌توانید با استفاده از Truffle و Chai تست‌ها را پیاده‌سازی کنید و از کیفیت کدهای خود مطمئن شوید.