譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。
因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!
Waffle
Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。
Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。
我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。
在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。
我不會解釋如何使用這個庫,我將專注于應該測試什么。
我們的合約已經實現了一些邏輯:
用mapping(address=>uint256)publicbalances保存用戶余額
有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。
Scopescan:Upbit疑似將394.4萬枚CYBER轉入幣安:金色財經報道,據Scopescan監測,Upbit疑似將394.4萬枚CYBER轉入幣安,目前仍持有34.7萬枚。[2023/9/4 13:16:10]
有一個最大的時間限制(deadline)uint256publicdeadline=block
);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers
);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract
);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers
);});
第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。
Etherscan在區塊顯示頁面添加 PoS 詳細信息:金色財經報道,Etherscan 瀏覽器現已在區塊顯示頁面添加 PoS 詳細信息,包括最終狀態、區塊提議的 Slot 和 Epoch、費用接收地址以及共識信息。[2022/9/16 7:00:52]
第二個測試:連續兩次調用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
在線經紀商Scalable Capital管理資產達到100億歐元:金色財經報道,數字財富管理平臺和在線經紀商Scalable Capital在過去12個月中將客戶資產翻了一番,管理資產達到 100 億歐元的高位。該公司于12月進入加密交易領域,現在在其平臺上擁有超過 600,000名客戶。
在Scalable Capital在由中國科技集團騰訊牽頭的E輪融資中籌集了超過1.5億歐元之后六個月,該加密貨幣發行出現了。(finextra)[2022/8/16 12:28:58]
};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers
);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract
提供加密交易的Banxso將在南非推出新交易所,受FSCA監管:2月20日消息,Banxso.com宣布推出一個新的南非交易所。該交易所計劃于2022年4月1日啟動。Banxso還計劃在年底前在另外3個國家開展業務。預計所有交易所都將受到全面監管:
- 南非的Banxso將受到FSCA的監管。
- 歐盟國家的Banxso將受到CySec的監管。
- 阿聯酋的Banxso將受到DFSA的監管。
- 英國的Banxso將受到FCA的監管。
據介紹,Banxso提供外匯(包括外匯期權)、股票、指數、大宗商品和加密貨幣交易。交易者可以選擇幾個交易平臺,包括Banxso X、MT4、MT5和一個移動應用程序平臺。Banxso集團還在塞舌爾、毛里求斯和圣文森特和格林納丁斯獲得了許可證。(Finance Magnates)[2022/2/21 10:04:39]
);it('timeLeft()returncorrecttimeleftafter10seconds',async()=>{constsecondElapsed=10;consttimeLeftBefore=awaitstakerContract
);});describe('Teststake()method',()=>{it('Stakeeventemitted',async()=>{constamount=ethers
動態 | 瑞士銀行 Dukascopy 計劃推出穩定幣 Dukascash,將進行業內公測:據 Finance Magnates 報道,瑞士銀行 Dukascopy 計劃推出穩定幣 Dukasash,該穩定幣價值將由歐元、美元、瑞士法郎三種法定貨幣支持,該銀行公開了其代幣儲備的地址。Dukasash 將面向加密行業專業人士進行公開測試,交易的最小規模為 1000 個或以上代幣。今年 3 月 Dukascopy 推出加密貨幣 Dukascoin,或成為全球首家發行加密貨幣并啟動 ICO 的受監管銀行。[2019/6/28]
);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:CONSTAETHTHEConi TokenPASTAetherzeroDiversified Staked Ethereum Index
Gate.ioHODL&Earnrecentlyunveiledanewproduct“EarnEveryday”tofacilitateevenmorechancestoearnbyh.
1900/1/1 0:00:00在與該行業進行了兩年的反復交涉后,全球反洗錢監管機構最終敲定了它的加密貨幣指南。盡管最終版本對某些有爭議的定義作出了可喜的澄清,但業內人士警告稱,關鍵細節其實在執行過程中.
1900/1/1 0:00:00本文來自?The?Block,原文作者:AislinnKeelyOdaily星球日報譯者?|念銀思唐加密資產借貸公司BlockFi與私募投資公司NeubergerBerman的合資實體Block.
1900/1/1 0:00:00據Cointelegraph11月10日報道,來自英國的一項新研究表明,大多數游戲工作室已經開始為他們即將推出的游戲探索區塊鏈.
1900/1/1 0:00:00親愛的ZT用戶: ZT創新板即將上線SIP,並開啟SIP/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年11月13日10:00; SIP 項目簡介:SpaceSIP(SIP)是.
1900/1/1 0:00:0011月10日晚,在騰訊控股2021年第三季度業績電話會上,騰訊CEO馬化騰表示,公司擁有大量探索和開發“元宇宙”的技術和能力.
1900/1/1 0:00:00