譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。
因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!
Waffle
Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。
Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。
我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。
在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。
我不會解釋如何使用這個庫,我將專注于應該測試什么。
我們的合約已經實現了一些邏輯:
用mapping(address=>uint256)publicbalances保存用戶余額
有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。
Wemade與Etherscan達成合作,將開發WEMIX3.0及Kroma區塊鏈瀏覽器:5月26日消息,韓國游戲公司Wemade與Etherscan宣布已達成戰略合作,雙方將共同開發區塊鏈瀏覽器。據悉,未來將開發WEMIX3.0區塊鏈瀏覽器及Kroma區塊鏈瀏覽器。Kroma是Wemade所開發的Optimism以太坊Layer2 項目。(prnewswire)[2023/5/26 9:44:50]
有一個最大的時間限制(deadline)uint256publicdeadline=block
);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers
);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract
);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers
Injective推出Cascade,支持Solana生態合約和DApp部署至Injective:3月30日消息,Cosmos 生態智能合約平臺 Injective 宣布推出 IBC 生態系統的首個 Solana SVM Rollup Cascad,該集成將把 Solana Sealevel 虛擬機 (SVM) 帶入 Cosmos ,使 Solana 開發人員能夠快速將他們的 Solana 合約和 DApp 部署到 Injective 上[2023/3/30 13:35:58]
);});
第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。
第二個測試:連續兩次調用execute()函數,質押已經完成,交易應該被撤銷,防止再次調用。
第三個測試:在時間到deadline之后調用execute()函數。交易應該被撤銷,因為只能在時間到deadline之前調用execute()函數。
最后一個測試:如果所有的要求都滿足,那么execute()函數不會回退,并且所有都如預期一樣。在函數調用外部合約后,completed變量應該是true,外部合約balance應該等于用戶的質押金額,我們的合約余額應該等于0。
如果一切正常,運行yarntest應該會有這樣的輸出:
Etherscan正在為Arbitrum構建資源管理器,或將于7月準備就緒:以太坊擴容網絡Arbitrum開發團隊Offchain Labs宣布與以太坊區塊鏈資源瀏覽器Etherscan達成合作關系,目前Etherscan正在為Arbitrum構建一個資源管理器,可能會在7月準備就緒。另外,區塊鏈開發平臺Alchemy將把其開發者平臺帶入到Arbitrum,旨在以低成本在Arbitrum上擴展去中心化應用。[2021/5/28 22:51:40]
完整測試代碼
下面我們來看看整個測試代碼:
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
BitMax交易所將上線Seascape Network (CWS):據官方消息,BitMax交易所(BTMX.io)將于2月8日 22:00(北京時間)上線Seascape Network (CWS),并開放CWS/USDT交易。充提現已開放。
Seascape Network是一個自帶激勵機制的游戲開發平臺,將新用戶應用DeFi生態系統的全過程游戲化和便捷化。用戶可在區塊鏈游戲和去中心化金融間自由切換。更多詳情請至BTMX官網查詢。[2021/2/8 19:10:54]
);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract
);it('timeLeft()returncorrecttimeleftafter10seconds',async()=>{constsecondElapsed=10;consttimeLeftBefore=awaitstakerContract
);});describe('Teststake()method',()=>{it('Stakeeventemitted',async()=>{constamount=ethers
分析 | 以太坊主流交易所24H交易量保持穩定 ?Grayscale相關持倉量呈增長趨勢 ?:據 TokenGazer 數據分析顯示,截止至 10 月 31日 11 時,以太坊價格為$182.39,總市值為$19,764.65M,主流交易所24H交易量仍然保持較高水平,當前交易量約為$119.74M,保持穩定;近期以太坊對比特幣匯率平穩波動;基本面方面,以太坊鏈上交易量、新增地址增速、鏈上DApp交易量、算力保持相對穩定;以太坊 30 天開發者指數約為 2.24;以太坊與 BTC 180 天關聯度有一定上行趨勢,30 天 ROI 有一定回調;據TokenGazer官網六道數據顯示,Grayscale以太坊持倉量近期呈現上升趨勢;ERC20 代幣總市值約為以太坊總市值的 62.05%。[2019/10/31]
);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反彈迫在眉睫?
尊敬的XT用戶: 為滿足用戶對杠桿交易的多方面需求,提高用戶的交易體驗感,XT杠桿交易區現已新增資產及其交易對.
1900/1/1 0:00:00據CoinDesk11月10日消息,Circle宣布計劃在新加坡建立亞洲中心,作為其全球擴張計劃的關鍵部分.
1900/1/1 0:00:00公告編號2021111002各位關心ZBG的投資者們和項目方:DOGE、DASH因錢包維護暫停充值,並將更新充值地址,使用者需要生成新的充值地址再進行充值.
1900/1/1 0:00:00鏈聞消息,針對游戲發行商的區塊鏈游戲基礎設施提供商Forte宣布完成7.25億美元B輪融資,SeaCapital和KoraManagement聯合領投.
1900/1/1 0:00:00文:MICHAELNADEAU編譯:Zion??????責編:karen對外面的世界一無所知的人可能都知道,游戲產業一直處于飛速發展之中。它是從新冠疫情大流行中受益的行業之一.
1900/1/1 0:00:00作者|秦曉峰 編輯|郝方舟 出品|Odaily星球日報北京時間今天上午8點,以太坊域名服務發布其治理代幣ENS并開放空投認領.
1900/1/1 0:00:00