譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。
因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!
Waffle
Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。
Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。
我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。
在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。
我不會解釋如何使用這個庫,我將專注于應該測試什么。
我們的合約已經實現了一些邏輯:
用mapping(address=>uint256)publicbalances保存用戶余額
有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。
Grayscale:即使美聯儲加息,加密貨幣價格仍可能上漲:金色財經報道,Grayscale周一表示,如果美聯儲周三加息,只要該決定符合市場預期,加密貨幣價格仍可能受益。也就是說,比特幣仍可能容易受到“許多情緒驅動因素”的影響。[2023/5/2 14:37:40]
有一個最大的時間限制(deadline)uint256publicdeadline=block
);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers
);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract
);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers
);});
第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。
Celo加入Chainlink SCALE計劃:金色財經報道,Celo官方宣布已加入Chainlink的SCALE計劃(用于Layer1和Layer2的可持續Chainlink訪問計劃),Celo表示,該計劃將通過為Celo開發人員提供低成本、可靠的Chainlink oracle數據和服務來幫助加速Celo的長期采用。[2023/4/26 14:26:58]
第二個測試:連續兩次調用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
消息人士:加密貨幣公司要求政府考慮將IFSCA作為印度的監管機構:8月25日消息,消息人士稱,加密貨幣公司正在要求政府考慮讓古吉拉特邦的國際金融服務中心管理局 (IFSCA) 成為印度所有加密交易的監管機構,因為他們認為,新的法案草案可能會給比特幣和其他加密貨幣賦予商品而并不是貨幣的地位,公司將受到當地KYC合規性的約束。(Economictimes)[2021/8/25 22:36:04]
};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers
);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract
公告 | TRONSCAN合約模塊完成升級:據官方最新消息,TRONSCAN波場區塊鏈瀏覽器合約模塊完成升級,現支持在合約驗證的時候添加license,在瀏覽所有合約列表時可根據是否已驗證和是否有開源license進行篩選,滿足用戶多樣化的需求。TRONSCAN是基于波場的一款區塊鏈瀏覽器,不僅包含區塊瀏覽器的一些基礎功能,支持token創建。[2019/12/6]
);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
動態 | Scatter 11 最新版本將很快公布:據 IMEOS 報道,Crypto Tim 最近發布一個新視頻介紹 Scatter 新版本。Scatter 11 是其最新版本,很快將會公布。目前版本已經在測試階段,已經提交到 GitHub 上。在視頻中,Tim 介紹了 Scatter 新版本的一些新功能,如:1.新錢包用戶界面。2.代幣交易功能。3.市場:買賣和轉移 NFTs。4.社交賬號登錄:Twitter,Google 或者 Facebook。5.用戶聲望和身份管理層(RIDL),保護用戶免受欺騙行為攻擊。[2019/5/20]
);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反彈迫在眉睫?
尊敬的用戶:?????????????BKEXGlobal即將上線GEIST,詳情如下:上線交易對:GEIST/USDT幣種類型:FTM充值功能開放時間:已開放交易功能開放時間:2021年11月.
1900/1/1 0:00:00據DeFi之道消息,去中心化組織FriendsWithBenefits宣布,前亞馬遜工作室戰略主管MatthewBall的元宇宙文章《TheMetaverse:WhatItIs.
1900/1/1 0:00:00AAX將上線GMWagmi(GM),充幣&交易瓜分64,000,000GM!作者AAXManager過去15分鐘內已更新親愛的用戶,AAX將上線GM(GM).
1900/1/1 0:00:00Taproot的BTC改進提案(BIP)令人興奮不已,因為它是自SegWit以來,四年來最大的升級。但是,我們需要明確的是,softfork并不會在一夜之間改善網絡的功能和隱私性.
1900/1/1 0:00:00FTX創始人SamBankman-Fried是這個星球上財富積累速度最快的男人,沒有之一。他的底層思考邏輯是什么,眾多文章或者采訪素材似乎都沒有解答我這個困惑,直到最近聽到了一期Patrick對.
1900/1/1 0:00:00出品|白澤研究院 根據《金融時報》的報道,全球社交平臺巨頭Twitter正在組建一個新部門,名為“TwitterCrypto”,專注于加密、區塊鏈和其他去中心化技術.
1900/1/1 0:00:00