譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。
因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!
Waffle
Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。
Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。
我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。
在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。
我不會解釋如何使用這個庫,我將專注于應該測試什么。
我們的合約已經實現了一些邏輯:
用mapping(address=>uint256)publicbalances保存用戶余額
有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。
彭博高級訴訟分析師將Grayscale的勝算從40%提高到70%:金色財經報道,彭博高級ETF分析師Eric Balchunas在社交媒體披露,我們的高級訴訟分析師在今天上午聽完Grayscale與SEC辯論后,將Grayscale公司的勝算從40%提高到70%。
金色此前報道,Grayscale與SEC之間的裁決可能需要等三到六個月的時間。[2023/3/8 12:48:24]
有一個最大的時間限制(deadline)uint256publicdeadline=block
);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers
);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract
);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers
三箭資本聯創預測2023年加密行業事件:SBF將認罪;Genesis和Grayscale或將面臨集體訴訟等:12月26日消息,三箭資本聯合創始人Kyle Davies預測2023年加密行業事件:SBF將認罪,約100人被起訴,但SBF 2023年不會在監獄服刑;Genesis和Grayscale或將面臨集體訴訟,SEC將以關聯子公司之間的不當行為對DCG提起刑事訴訟;幣安將繼續獲得市場份額;Tether將保持錨定;迪拜和新加坡仍是全球加密中心;BTC和ETH生產區塊,加密沒有死。[2022/12/26 22:08:25]
);});
第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。
第二個測試:連續兩次調用execute()函數,質押已經完成,交易應該被撤銷,防止再次調用。
第三個測試:在時間到deadline之后調用execute()函數。交易應該被撤銷,因為只能在時間到deadline之前調用execute()函數。
最后一個測試:如果所有的要求都滿足,那么execute()函數不會回退,并且所有都如預期一樣。在函數調用外部合約后,completed變量應該是true,外部合約balance應該等于用戶的質押金額,我們的合約余額應該等于0。
PeckShield:Etherscan等網站的彈出窗口是由Coinzilla投放的惡意廣告,用戶可撤銷權限:5月14日消息,派盾(PeckShield)監測顯示,加密數據網站Etherscan、CoinGecko、DeFiPulse等的彈出窗口是由Coinzilla(加密廣告網絡)投放的惡意廣告,如果用戶在瀏覽它們時與簽名請求進行了交互,可使用revoke.cash撤銷訪問權限。
此前報道,Etherscan、CoinGecko等加密數據網站發生惡意彈窗事件,提示用戶連接MetaMask錢包。[2022/5/14 3:15:40]
如果一切正常,運行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
NFT資產瀏覽器和數據分析平臺NFTSCAN推出API開放平臺:10月16日消息,NFTSCAN推出API開放平臺,目前,NFT開放平臺支持的API主要有以下幾個:
1)獲取一個錢包地址中持有的NFT資產數據;
2)獲取一個NFT資產合約下所有的NFT數據;
3)獲取某個NFT資產的詳細信息,如:鑄造信息、Metadata等;
4)獲取一個錢包地址與所有NFT資產合約相關的歷史交易記錄;
5)獲取一個錢包地址與指定NFT資產合約相關的歷史交易記錄;
其他更多的NFT數據API還在開發和拓展中。除了上述常規的API外,NFTSCAN團隊也支持NFT數據接口的定制化服務。
據悉,NFTSCAN作為一個專業的NFT資產瀏覽器和數據分析平臺,目前已全面覆蓋了以太坊網絡的NFT數據,拓展多鏈NFT數據也在積極籌劃中。[2021/10/16 20:33:53]
);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract
);it('timeLeft()returncorrecttimeleftafter10seconds',async()=>{constsecondElapsed=10;consttimeLeftBefore=awaitstakerContract
聲音 | Scarlett Zhang:短期內dApp的繁榮未必能帶動整個二級市場的繁榮:針對dApp的繁榮是否能帶動整個二級市場繁榮的問題,Bizkey聯合創始人Scarlett Zhang表示:短期內dApp的繁榮未必能帶動整個二級市場的繁榮,畢竟dApp不同的通證設計機制是否能改進原本的商業協作方式進而產生價值需要時間驗證。隨著時間的發展可能會有人發現其實有些項目的通證唯一用途類似于預付卡,沒有持有意義,這短期內對二級市場會造成負面影響。但人們總是高估技術變革帶來的第一個5年價值,低估第二個5年價值,長遠來看被市場驗證過的dApp所帶來的價值肯定會流向二級市場,并帶動二級市場的繁榮。(火星財經)[2019/1/12]
);});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:CONETHSTATHEAutonomous Economic Matrixtogetherbnb黃油場景PSTAKEBABYTETHER
FlokiInu(FLOKI)將上線AAX,充幣&交易&理財瓜分等值$20000FLOKI大獎作者AAXManager過去15分鐘內已更新尊敬的AAX用戶:AAX將上線Floki.
1900/1/1 0:00:00從我第一次正式宣布EOS網絡基金會成立以來,在短短三個月內,我相信我們已經推動EOS進入了一個新的創世紀。雖然我們仍然有很長的路要走,但我們已經取得的進展是非常鼓舞人心的.
1900/1/1 0:00:00親愛的BitMart用戶:BitMart將于2021年11月22日上線代幣iMoneyCrypto(IMC)。屆時將開通IMC/USDT交易對.
1900/1/1 0:00:00圖片來源:網絡 作者:ChenZou 元宇宙,現在我們所耳熟能詳的一個詞,Facebook改名“Meta”再次引爆了這一輪熱點,元宇宙似乎一夜之間成為了巨頭們競相爭搶的新大陸.
1900/1/1 0:00:00小紅書的數字藝術平臺R-SPACE正式上線了。這是在國內繼阿里、騰訊之后又一家涉足NFT領域的行業巨頭.
1900/1/1 0:00:00親愛的用戶: 幣安流動性挖礦現已開放PERP/USDT流動性池。即刻添加流動性,瓜分總額2,800PERP挖礦收益,收益分配將依據用戶持有份額佔幣對池總份額比例而定.
1900/1/1 0:00:00