以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

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

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。

彭博分析師:貝萊德ETF的推出將給Grayscale的估值帶來壓力:金色財經報道,The Block Research數據表明,自今年年初以來,Grayscale從其旗艦產品GBTC和ETHE中獲得了超過2.3億美元的收入。彭博社分析師James Seyffart表示,如果貝萊德能夠成功地將比特幣產品推向市場,那么Grayscale管理這些資產所收取2.0%和2.5%的年費可能很快就會崩潰,可能會降低灰度的估值,因為Grayscale將被迫比預期更快地降低費用,最重要的是,如果GBTC轉換為ETF,那么該基金將面臨潛在的資金外流。

Grayscale的比特幣信托管理著超過160億美元的資金。[2023/6/21 21:51:01]

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

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

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

GaloisCapital:在FTX賬戶上有1億美元無法提出:11月12日消息,對沖基金Galois Capital聯合創始人Kevin Zhou在給投資者的信當中表示,該公司近一半的資產被困在FTX平臺無法提出。

據悉,Galois Capital管理著超過2億美元的資產,他們因提前發現Luna崩盤危機而受到贊譽。(《金融時報》)[2022/11/12 12:55:11]

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

);});

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

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

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

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

美國賽車公司NASCAR與Zed Run開發商達成合作:金色財經報道,美國賽車公司NASCAR已與基于區塊鏈的數字賽馬游戲ZED RUN背后的開發商Virtually Human Studio(VHS)合作,首先將在其賽車平臺上創建NASCAR品牌的數字馬。兩家公司仍在敲定有關分銷和銷售的細節。[2021/8/6 1:37:56]

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

完整測試代碼

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

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

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

Gate.io 上線BasisCash項目BAS挖礦DeFi理財:據官方公告,Gate.io上線BasisCash項目治理代幣BAS挖礦DeFi理財,抵押BAS挖BAC穩定代幣。收益按七日平均持倉發放,收益率來自算法穩定幣項目智能合約價格穩定機制的代幣釋放,只有算法穩定幣出現溢價需要釋放的時候才會出現較高收益,因此每日收益波動較大,為保證資金安全,減少轉賬操作成本和風險,Gate.io將通過保持最低限度敞口和轉賬次數的方式降低風險,因此不會與鏈上收益率保持一致,但可以有效降低用戶參與門檻和減少風險,請務必了解清楚。 希望參與到平臺用戶可以關注Gate.io ”理財寶“,Web和App均可參與。[2020/12/27 16:38:50]

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

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

動態 | 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('Teststake()method',()=>{it('Stakeeventemitted',async()=>{constamount=ethers

);it('Stake0

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

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

);});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:CONSTAETHTHECONM幣bitstamp提現交稅PlethoriThe Real Golden Inu

以太坊交易所
Gate.io’ s Award Period of the Recent Trading Competition Announcement_GAT

Gate.ioFLOKI,GSPI,DAFI,ITGR,ROSN,VSO,CPHR,DVI,DERI,VEMP,RBC.

1900/1/1 0:00:00
區塊鏈之符號理論:抽象化和身份管理的必要條件_區塊鏈

數字技術之所以有用,在很大程度上是因為它們通過抽象化對象的復雜屬性來創造表征,然后使用這些新形成的身份來控制和管理實體.

1900/1/1 0:00:00
鏈上交易聚合器 1inch 基金會向 6 個項目及 2 名開發人員發放 58.5 萬美元贈款_INC

鏈聞消息,鏈上交易聚合器1inch基金會宣布向6個項目及2名開發人員發放58.5萬美元贈款,其中包括去中心化交易所E-Vitutal、Polygon鏈上加密期權交易的自動做市商協議Moret、加.

1900/1/1 0:00:00
開啟UMI (UMI)交易 / 2021.11.10_UMI

親愛的BitGlobal用戶:BitGlobal將在GEM上線UMI數位資產服務,?詳情如下充提安排:11月10日開放立即充值>> 交易時間:———— 交?易?對:UMI/USDT.

1900/1/1 0:00:00
Twitter組建加密部門 社交巨頭們集體擁抱加密領域_ITT

出品|白澤研究院 根據《金融時報》的報道,全球社交平臺巨頭Twitter正在組建一個新部門,名為“TwitterCrypto”,專注于加密、區塊鏈和其他去中心化技術.

1900/1/1 0:00:00
BKEX Global 關于Seed Incubator開啟第十四期項目LQR(Laqira)活動的公告_KEX

尊敬的用戶:? ?? BKEXGlobal即將在SeedIncubator開啟LQR活動,詳情如下:?開啟時間:2021年11月12日12:00~14:00交易時間:2021年11月12日16:.

1900/1/1 0:00:00
ads