Smarta blockkedjekontrakt med Solidity · Lektion

Skriva och köra kontraktstester

Skriv automatiserade tester för era smarta kontrakt så att ni kan upptäcka buggar innan ni distribuerar till ett live-nätverk.

Lektion 4 av 413 steg

Skriva och köra kontraktstester är en gratis lektion i Smarta blockkedjekontrakt med Solidity på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Smarta blockkedjekontrakt med Solidity, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Smarta blockkedjekontrakt med Solidity innehåller totalt 4 lektioner.

Varför testa smarta kontrakt

Driftsatt kontraktskod är oföränderlig och innehåller ofta verkliga värden. Ett fel kan vara omöjligt att åtgärda och kostsamt. Automatiserade tester låter dig verifiera beteendet upprepade gånger och säkert innan någon driftsättning.

Testverktygen

Hardhat och Truffle integrerar testramverk. Hardhat använder vanligtvis Mocha med assertions-biblioteket Chai och ethers.js för att driftsätta och anropa kontrakt i tester.

Testfilernas struktur

Tester finns i mappen test/. Varje fil beskriver ett kontrakt med describe-block och enskilda testfall med it-block.

describe("Counter", function () {
  it("starts at zero", async function () {
    // ...
  });
});

Driftsätta i ett test

Före varje test driftsätter du en ny kontraktsinstans, så att testerna förblir isolerade och inte påverkar varandra.

const Counter = await ethers.getContractFactory("Counter");
const counter = await Counter.deploy();

Skriva assertions

Anropa en kontraktsfunktion och kontrollera resultatet med Chai. Genom att läsa det returnerade värdet bekräftar du att kontraktet fungerar som förväntat.

expect(await counter.value()).to.equal(0);
await counter.increment();
expect(await counter.value()).to.equal(1);

Testa återställningar

Bra tester bekräftar även fel. Kontrollera att ett anrop återställs med den förväntade orsaken när det får ogiltiga indata.

await expect(counter.setOwner(addr)).to.be.revertedWith("Not owner");

Testa händelser

Verifiera att en funktion genererar rätt händelse med rätt argument. Händelser är det sätt som off-chain-appar får information om tillståndsändringar.

await expect(counter.increment())
  .to.emit(counter, "Incremented")
  .withArgs(1);

Arbeta med flera konton

Testa åtkomstkontroll genom att anropa funktioner från olika signerare. Anslut ett kontrakt till ett annat konto för att simulera att en icke-ägare försöker utföra en begränsad åtgärd.

const [owner, other] = await ethers.getSigners();
await expect(counter.connect(other).reset())
  .to.be.reverted;

Manipulera tid och tillstånd

Testramverk kan snabbspola blocktid och skapa block, så att du kan testa tidslåst logik utan att vänta. Detta är viktigt för kontrakt med vesting eller auktioner.

Mäta testtäckning

Ett täckningsverktyg rapporterar vilka rader och grenar dina tester kör. Sikta på hög täckning för kritiska flöden, särskilt funktioner som flyttar pengar och åtkomstkontroller.

npx hardhat coverage

Köra testsviten

Kör alla tester med ett enda kommando. Integrera detta i CI så att varje ändring verifieras automatiskt före en merge eller driftsättning.

npx hardhat test

Snabb kontroll

Kontrollera dina kunskaper om kontraktstestning.

Sammanfattning

Du har lärt dig att testa kontrakt:

  • Använd Mocha/Chai med ethers i mappen test/
  • Driftsätt en ny instans och kontrollera returvärden
  • Testa återställningar, händelser och flera konton
  • Manipulera tid, mät täckning och kör i CI

En stabil testsvit är ditt bästa försvar mot kostsamma buggar på blockkedjan.

Gratis att börja

Lär dig Smarta blockkedjekontrakt med Solidity med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Skriva och köra kontraktstester” gratis?

Ja – hela texten till ”Skriva och köra kontraktstester” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Smarta blockkedjekontrakt med Solidity, kan Ni uppgradera till CoddyKit PRO. Kursen i Smarta blockkedjekontrakt med Solidity innehåller totalt 4 lektioner.

Vad lär jag mig i ”Skriva och köra kontraktstester”?

Skriv automatiserade tester för era smarta kontrakt så att ni kan upptäcka buggar innan ni distribuerar till ett live-nätverk. Ni övar på Smarta blockkedjekontrakt med Solidity med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Smarta blockkedjekontrakt med Solidity?

Du behöver inga förkunskaper. Utbildningen i Smarta blockkedjekontrakt med Solidity på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Skriva och köra kontraktstester”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Smarta blockkedjekontrakt med Solidity-lektionen?

Ja. Varje Smarta blockkedjekontrakt med Solidity-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Konfigurera Hardhat eller Truffle
  2. Kompilera och driftsätta kontrakt
  3. Interagera med driftsatta kontrakt
  4. Skriva och köra kontraktstester
← Tillbaka till Smarta blockkedjekontrakt med Solidity