比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

CON:scaffold-eth 挑戰:測試覆蓋率(Part3)

Author:

Time:1900/1/1 0:00:00

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。

因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!

Waffle

Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。

Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。

我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。

在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。

我不會解釋如何使用這個庫,我將專注于應該測試什么。

我們的合約已經實現了一些邏輯:

用mapping(address=>uint256)publicbalances保存用戶余額

有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。

NFTScan成為Binance NFT數據提供商:7月6日消息,NFT基礎設施服務商NFTScan已成為Binance NFT官方數據提供商。目前Binance NFT平臺支持BNB Chain、Ethereum、Polygon、Bitcoin 4條主流區塊鏈網絡的NFT資產交易。[2023/7/6 22:21:41]

有一個最大的時間限制(deadline)uint256publicdeadline=block

);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers

);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract

);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers

);});

第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。

TwitterScan Pass被Opensea下架系Unstoppable投訴所致:金色財經報道,針對TwitterScan Pass被Opensea下架一事,TwitterScan創始人發文表示,NFT域名提供商Unstoppable向Opensea進行投訴,Opensea未了解情況,直接將其系列下架。[2022/10/6 18:40:16]

第二個測試:連續兩次調用execute()函數,質押已經完成,交易應該被撤銷,防止再次調用。

第三個測試:在時間到deadline之后調用execute()函數。交易應該被撤銷,因為只能在時間到deadline之前調用execute()函數。

最后一個測試:如果所有的要求都滿足,那么execute()函數不會回退,并且所有都如預期一樣。在函數調用外部合約后,completed變量應該是true,外部合約balance應該等于用戶的質押金額,我們的合約余額應該等于0。

如果一切正常,運行yarntest應該會有這樣的輸出:

完整測試代碼

下面我們來看看整個測試代碼:

const{ethers}=require('hardhat');const{use,expect}=require('chai');const{solidity}=require('ethereum-waffle');use(solidity);//UtilitiesmethodsconstincreaseWorldTimeInSeconds=async(seconds,mine=false)=>{awaitethers

NFT基礎設施NFTSCAN完成150萬美金天使輪股權融資:12月31日消息,NFT基礎設施NFTSCAN完成150萬美金天使輪股權融資,本輪融資由Mask Network、Cipholio Ventures、SNZ、Antalpha共同投資。NFTSCAN團隊表示,本輪融資資金將主要用于技術團隊建設,進一步提高開發效率,推動多鏈NFT數據開發,服務更多區塊鏈網絡的開發者和NFT生態群體。

據悉,NFTSCAN是一個專業的NFT瀏覽器和數據分析平臺。根據此前消息,NFTSCAN在今年4月份獲得了由Y2Z Ventures領投的種子輪融資,并于9月份正式發布以太坊NFT瀏覽器。[2021/12/31 8:16:28]

};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers

);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract

以太坊二層擴容方案Arbitrum宣布Arbiscan瀏覽器已上線:以太坊二層擴容方案Arbitrum發推稱,與區塊鏈瀏覽器Etherscan合作的Arbiscan已經上線。[2021/8/30 22:46:03]

);it('timeLeft()returncorrecttimeleftafter10seconds',async()=>{constsecondElapsed=10;consttimeLeftBefore=awaitstakerContract

);});describe('Teststake()method',()=>{it('Stakeeventemitted',async()=>{constamount=ethers

);it('Stake0

);it('Stakerevertedifdeadlineisreached',async()=>{//LetdeadlinebereachedawaitincreaseWorldTimeInSeconds(180,true);constamount=ethers

);it('Stakerevertedifexternalcontractiscompleted',async()=>{constamount=ethers

動態 | Bloqboard 及 LoanScan 團隊推出集成銀行服務的 Defi 應用 Linen:曾建立基于以太坊的借貸平臺 Bloqboard 和借貸數據提供商 LoanScan 的團隊正在推出一款集成銀行服務的 Defi 應用 Linen。Bloqboard 兼 Linen 創始人 Vitaly Bahachuk 表示,Linen 旨在減少借貸過程對多個 DApp 的需求,精簡貸款流程從而降低風險。Linen 將集成傳統銀行服務,例如存款、儲蓄、借記卡功能和匯款,并引入基于以太坊的借貸協議(例如 Compound),目前借貸服務已經支持 USDC,并將計劃支持 DAI。Linen 近期完成新一輪未公開的融資,新的投資者包括加密貨幣支付提供商 Wyre 和 Hashkey,此前 Linen 投資者包括 Polychain Capital 和 Coinbase 等機構。Bahachuk 表示 Hashkey 的投資具有戰略意義,Linen 希望向亞洲敞開大門,Hashkey 是該地區的主要投資者之一。[2019/9/21]

);});describe('Testexecute()method',()=>{it('executerevertedbecausestakeamountnotreachedthreshold',async()=>{awaitexpect(stakerContract

);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers

);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract

);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers

);});describe('Testwithdraw()method',()=>{it('Withdrawrevertedifdeadlineisnotreached',async()=>{awaitexpect(stakerContract

);it('Withdrawrevertedifexternalcontractiscompleted',async()=>{//CompletethestakeprocessconsttxStake=awaitstakerContract

);it('Withdrawrevertedifaddresshasnobalance',async()=>{//LettimepassawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract

);it('Withdrawsuccess!',async()=>{//Completethestakeprocessconstamount=ethers

);});});

你是否注意到,測試代碼的覆蓋率遠遠大于合約本身?這就是我們想看到的!測試所有的東西!

本翻譯由CellETF贊助支持。

來源:https://stermi.medium.com/how-to-write-your-first-decentralized-app-scaffold-eth-challenge-1-staking-dapp-b0b6a6f4d242

參考資料

登鏈翻譯計劃:https://github.com/lbc-team/Pioneer

翻譯小組:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

Waffle:https://ethereum-waffle.readthedocs.io/en/latest/index.html

Mocha:https://mochajs.org/

Chai:https://www.chaijs.com/

Chai匹配器:https://ethereum-waffle.readthedocs.io/en/latest/matchers.html

CellETF:https://celletf.io/?utm_souce=learnblockchain

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

本文來源于非小號媒體平臺:

登鏈社區

現已在非小號資訊平臺發布105篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/10481469.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

比特幣進入牛市交叉點,BTC反彈迫在眉睫?

Tags:CONSTAETHTHEBITCONEYEthereum Stake FinanceQETHethereal法語寓意

幣安app官方下載最新版
Gate.io Startup:Good Games Guild (GGG) Initial Sale Result & Listing Schedule

1GoodGamesGuild(GGG)TokenSaleResultTheGate.ioStartupGoodGamesGuild(GGG)saleresultisasfollows:GGGS.

1900/1/1 0:00:00
比特幣:盤中寶——Taproot 升級臨近,城市代幣趨勢化明顯

市場回顧幣贏研究院曾在《盤中寶——元宇宙持續火爆;V神發文探討城市代幣》一文中解讀了城市代幣的興起和發展趨勢.

1900/1/1 0:00:00
GAT:Gate.io博客:【深度分析】SQUID魷魚游戲合約漏洞技術分析-仍然存在極高風險點

本月初,基于BSC的Play-Earn代幣SquidGame價格在暴漲數千倍發生閃崩。此后,項目方聲稱已經去除了合約中對于SQUID大額交易的限制,將Owner權限轉給了黑洞地址,并關閉了所有社.

1900/1/1 0:00:00
ECC:ECC幣翻倍!對干細胞治療帶來顛覆性的轉變

長期以來,大部分的臨床醫師對于血管性疾病關注的是大血管性病變,而對于冠脈微血管功能障礙普遍關注較低.

1900/1/1 0:00:00
區塊鏈:一文了解游戲的歷史及游戲轉移到區塊鏈的五大原因

文:MICHAELNADEAU編譯:Zion??????責編:karen對外面的世界一無所知的人可能都知道,游戲產業一直處于飛速發展之中。它是從新冠疫情大流行中受益的行業之一.

1900/1/1 0:00:00
區塊鏈:星球日報 | ETH再創歷史新高;Matter Labs完成5000萬美元B輪融資(11月9日)

頭條 ETH站上4800USDT,再創歷史新高歐易OKEx行情顯示,ETH站上4800USDT,再創歷史新高.

1900/1/1 0:00:00
ads