譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。
因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!
Waffle
Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。
Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。
我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。
在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。
我不會解釋如何使用這個庫,我將專注于應該測試什么。
我們的合約已經實現了一些邏輯:
用mapping(address=>uint256)publicbalances保存用戶余額
有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。
Grayscale CEO:比特幣不再是曇花一現的時尚:金色財經報道,Grayscale首席執行官Michael Sonnenshein表示,貝萊德和富達等大型投資公司加入推出現貨比特幣ETF基金的競賽,說明比特幣在很大程度上不再是曇花一現。最近有關比特幣新進入者的消息凸顯了這一資產類別在更廣泛的范圍內的持久力,許多投資者認為這是千載難逢的投資機會。[2023/7/7 22:22:44]
有一個最大的時間限制(deadline)uint256publicdeadline=block
);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers
);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract
);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers
NFTScan新增支持Aptos網絡,并同步上線Aptos網絡NFT API數據服務:4月25日消息,多鏈NFT數據基礎設施服務商NFTScan宣布新增支持Aptos網絡,并同步上線Aptos網絡NFT API數據服務。Aptos是繼Ethereum、BNBChain、Polygon、Arbitrum、Optimism、Solana等區塊鏈之后,NFTScan支持的第 13 條區塊鏈。[2023/4/25 14:26:29]
);});
第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。
第二個測試:連續兩次調用execute()函數,質押已經完成,交易應該被撤銷,防止再次調用。
第三個測試:在時間到deadline之后調用execute()函數。交易應該被撤銷,因為只能在時間到deadline之前調用execute()函數。
最后一個測試:如果所有的要求都滿足,那么execute()函數不會回退,并且所有都如預期一樣。在函數調用外部合約后,completed變量應該是true,外部合約balance應該等于用戶的質押金額,我們的合約余額應該等于0。
如果一切正常,運行yarntest應該會有這樣的輸出:
Grayscale的GBTC折扣擴大至接近歷史最高水平:金色財經報道,Grayscale的比特幣信托(GBTC)是全球最大的公開交易比特幣基金,其折價擴大至接近歷史高位。根據TradeBlock的數據,周一GBTC對資產凈值(NAV)的折讓達到自12月29日以來的最低水平。據美國證券備案文件顯示,數字貨幣集團(DCG)開始以大幅折扣出售由Grayscale運營的幾種投資工具。自該報告于2月7日發布以來,折扣一直在擴大,當時折扣為43%。
該股目前的交易價格較資產凈值折讓47%,是自2022年12月下旬以來的最大折讓,當時折價達到創紀錄的49%。在Genesis和DCG暴露于名譽掃地的加密貨幣交易所FTX的消息傳出后,折扣最初暴跌。在Grayscale宣布將出售其信托股份以償還Genesis的債權人后,1月份的漲勢結束,Genesis于1月19日根據美國破產法第11章申請了破產保護,而且灰度是否決定起訴美國證券交易委員會的決定存在不確定性。拒絕了其將信托轉變為現貨比特幣交易所交易基金的申請。[2023/2/14 12:05:01]
完整測試代碼
下面我們來看看整個測試代碼:
const{ethers}=require('hardhat');const{use,expect}=require('chai');const{solidity}=require('ethereum-waffle');use(solidity);//UtilitiesmethodsconstincreaseWorldTimeInSeconds=async(seconds,mine=false)=>{awaitethers
ProShares的比特幣ETF日交易量超過Grayscale的GBTC:7月12日消息,根據彭博社Eric Balchunas提供的數據,ProShares比特幣策略交易所交易基金(BITO)的每日交易量已超過灰度比特幣信托基金(GBTC)。美國首個基于期貨的比特幣ETF交易代碼為BITO,平均每天交易額為1.7億美元。GBTC是頂級加密貨幣基金經理的皇冠上的明珠,錄得1.379億美元。[2022/7/12 2:06:31]
};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers
);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract
NFTScan瀏覽器在The Sandbox購入土地并計劃建設品牌館:5月5日消息,據官方推特,近日,區塊鏈基礎設施NFTScan瀏覽器官方在The Sandbox成功購入一塊3*3的土地,并計劃建設NFTScan虛擬品牌標識性建筑。據悉,NFTScan是一個NFT瀏覽器和數據開放平臺,為開發者和用戶提供NFT數據搜索查詢服務,目前已支持Ethereum、BNBChain、Moonbeam、Polygon 4條區塊鏈網站的NFT數據。[2022/5/5 2:51:37]
);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
);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:CONSTATHEETHhycon幣歸零Vesta Financeethereal做英文名EtherSmart
11月10日消息,今年1月,韓國企劃財政部公布了所得稅法修正案,很快遭到了虛擬資產投資者的強烈反對。修改后的法律規定,如果加密貨幣交易利潤超過250萬韓元,國稅廳將征收20%的稅.
1900/1/1 0:00:00作者|?陳麗姍??編審?|于百程?排版?|?王紀瓏琰2016年4月,眾籌達1.5億美元,史上首個去中心化的組織TheDAO出現,其作為開源的分布式軟件存在,開展風險投資基金.
1900/1/1 0:00:00We''relookingforuserstogetinspired.Wewantyoutocreate.
1900/1/1 0:00:00尊敬的用戶:AOFEX將於2021年11月12日上線DOGEZILLA,具體時間安排如下: 充提業務均已開啟 交易時間:11月12日18:00注:?DOGEZILLA因代幣機制所限.
1900/1/1 0:00:00鏈聞消息,Filecoin將推出Filecoin虛擬機,為Filecoin網絡引入智能合約的可編程性.
1900/1/1 0:00:00親愛的BitGlobal用戶:BitGlobal將在GEM上線UMI數位資產服務,?詳情如下充提安排:11月10日開放立即充值>> 交易時間:———— 交?易?對:UMI/USDT.
1900/1/1 0:00:00