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.
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 coverageKö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 testSnabb 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.
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
- Konfigurera Hardhat eller Truffle
- Kompilera och driftsätta kontrakt
- Interagera med driftsatta kontrakt
- Skriva och köra kontraktstester