加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 萊特幣 > Info

scaffold-eth 挑戰:測試覆蓋率(Part3)_CON:STARK

Author:

Time:1900/1/1 0:00:00

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

我知道,你想直接部署合約和前端,并立刻就開始在測試網上進行測試,但是......我們需要確定一切都按預期工作,而不需要在前端用戶界面上進行monkey測試。

因此,在文章的下一部分,我將介紹一些開發人員應該做的事情:測試合約邏輯!

Waffle

Waffle是一個用于編寫和測試智能合約的庫,它與ethers-js配合得非常默契。

Waffle有很多有幫助的工具。waffle中的測試是用Mocha和Chai一起編寫的。你可以使用不同的測試環境,但Waffle的匹配器(matcher)只能在chai下工作。

我們將使用Chai匹配器來驗證我們所期望的條件是否已經滿足。

在寫完所有的測試用例后,你只需要輸入yarntest,就會自動針對你的合約進行測試。

我不會解釋如何使用這個庫,我將專注于應該測試什么。

我們的合約已經實現了一些邏輯:

用mapping(address=>uint256)publicbalances保存用戶余額

有一個最小質押金額的閥值uint256publicconstantthreshold=1ether。

Grayscale首席法務官:SEC與比特幣ETF相關的行動應該以公平有序的方式進行:金色財經報道,Grayscale首席法務官Craig Salm在一份聲明中表示,美國證券交易委員會(SEC)與比特幣ETF相關的行動應該以公平有序的方式進行。作為一個以信息披露為基礎的監管機構,SEC不應該挑選贏家和輸家。Salm表示,無論SEC批準現貨ETF是出于法院授權還是“他們在此事上立場的演變”,都應該“以對所有投資者和發行人公平的方式”。

灰度比特幣信托基金 (GBTC) 管理著超過 180 億美元的資產,讓投資者能夠接觸到比特幣敞口。該公司已將SEC告上法庭,因為該機構一再拒絕將其旗艦比特幣基金轉換為現貨比特幣ETF。[2023/7/28 16:03:20]

有一個最大的時間限制(deadline)uint256publicdeadline=block

);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers

);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract

Grayscale和Fir Tree同意解決比特幣信托訴訟:金色財經報道,Fir Tree Capital Management和加密資產管理公司Grayscale Investments已達成協議,解決Fir Tree去年對Grayscale提起的訴訟。特拉華州的法庭文件顯示,去年12月,杉樹資本管理公司(Fir Tree Capital Management)起訴Grayscale,要求其提供信息,調查潛在的管理不善和利益沖突。根據周二宣布的協議,Grayscale將提供有關該公司旗艦產品GBTC的文檔。

該產品旨在以證券的形式提供比特幣敞口,其交易價格通常高于或低于資產凈值。Fir Tree最初的投訴稱,Grayscale的投資者受到了“對股東不友好的行為”的傷害。它還呼吁該公司允許贖回GBTC。該公司表示,Grayscale應該對GBTC的股票進行要約收購。Grayscale需要獲得股東的批準才能進行這樣的發行。[2023/7/12 10:49:01]

);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers

);});

第一個測試:如果在質押金額沒有達到閾值的情況下調用execute()函數,它將撤銷交易并返回適當的錯誤信息。

泛非點對點加密貨幣交易網絡Scalex完成戰略輪融資,Adaverse參投:10月12日消息,泛非點對點加密貨幣交易網絡 Scalex 宣布完成一筆戰略輪融資,Cardano 生態系統加速器 Adaverse 參投,具體金額暫未披露,據悉本輪融資是該公司 pre-seed 輪融資的一部分,pre-seed 輪融資的投資方還包括 EMURGO Africa 和 Hacked Capital。Scalex 通過合并最好的 TradFi 和 DeFi 基礎設施,提供安全、保證和自動化加密平臺,幫助非洲用戶可以輕松無縫地連接到加密生態系統。(techcabal)[2022/10/12 10:32:32]

第二個測試:連續兩次調用execute()函數,質押已經完成,交易應該被撤銷,防止再次調用。

第三個測試:在時間到deadline之后調用execute()函數。交易應該被撤銷,因為只能在時間到deadline之前調用execute()函數。

最后一個測試:如果所有的要求都滿足,那么execute()函數不會回退,并且所有都如預期一樣。在函數調用外部合約后,completed變量應該是true,外部合約balance應該等于用戶的質押金額,我們的合約余額應該等于0。

如果一切正常,運行yarntest應該會有這樣的輸出:

SBF:FTX很高興與 FSCA 合作,雙方已開始對話:金色財經報道,2月2日,據FTX創始人SBF在推特上透露:“FTX很高興與南非金融部門行為監管局(FSCA)合作,并感謝他們讓我們注意到這一點。我們不知道 FSCA 有任何外展活動,但很高興與 FSCA 合作以遵守監管要求,目前已經聯系開始對話。”據此前金十報道稱,南非加密貨幣交易者警告稱不要使用交易平臺FTX和BYBIT,另外去年九月南非金融部門行為監管局曾發布警告要求公眾在與 BINANCE GROUP 打交道時保持謹慎和警惕,因為根據 2002 年《金融咨詢和中介服務法》(FAIS 法),BINANCE GROUP沒有獲得在該國提供金融服務的許可無權在南非提供金融建議或中介服務。[2022/2/3 9:28:35]

完整測試代碼

下面我們來看看整個測試代碼:

const{ethers}=require('hardhat');const{use,expect}=require('chai');const{solidity}=require('ethereum-waffle');use(solidity);//UtilitiesmethodsconstincreaseWorldTimeInSeconds=async(seconds,mine=false)=>{awaitethers

動態 | EOSCanada 解析 B1 源代碼解釋相關期權兌現計劃:據 IMEOS 報道,EOSCanada 發布文章解析 B1 源代碼,以解釋相關期權兌現計劃。文中經過源代碼分析得出結論,截至2019年1月1日,Block.one 可以贖回共計5879120個代幣。分析結果認為,如果 Block.one 想要以小于其全部權重的票數進行投票,則他們必須贖回當前最大數量的代幣。然后,他們必須將這些代幣轉移到一個單獨的帳戶,抵押,然后投票。截至撰寫該文時(2019年3月中旬),這筆金額約為785萬美元。因此,雖然 Block.one 以外的任何人都不知道他們投票的想法或他們想要用他們的代幣做什么,但我們現在都能理解實際存在的限制。[2019/3/21]

};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers

);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

);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:CONSTAETHTRAconi幣最新消息STARKeth錢包地址靚號生成器ASTRADAO幣

萊特幣
Gate.io HODL& Earn Launches “SharkFin BTC6-Day No.42”, Estimated Reward of 3%-16% P.A._THE:GATE

Gate.ioHODL&Earnwilllaunchits42ndsharkfinstructuredproduct“SharkFinBTC6-DayNo.

1900/1/1 0:00:00
關於DOGE網絡暫停提現的說明_COM:MINIDOGE

親愛的用戶:幣安於2021年11月10日進行了版本更新。升級完成後我們發現,在幣安平臺上進行DOGE網絡提現存在一個需要解決的技術問題。因此,平臺暫停了DOGE網絡的提現.

1900/1/1 0:00:00
Gate.io Will List Aldrin (RIN) and Join Hodl & Earn, Enjoy 100% APY_GAT:gate.io官網下載ios

Gate.ioisgoingtocommenceAldrin(RIN)tradingonNov.15,202108:00UTC.Tocelebratethelisting.

1900/1/1 0:00:00
Gate.io 關于將對SNX3S,SUSHI3S,EOS3S,XLM3S,BSV3S ETF產品進行持倉份額合并和單位凈值調整的公告_GAT:Gate.io

Gate.io杠杠ETF是一種自帶杠桿屬性和具有自動調倉機制的交易產品。ETF產品每日跟進盈利虧損調整杠桿率回到目標杠桿桿倍數,盈利會開倉,虧損會減倉,用戶在交易杠桿產品的時候不需要支付保證金,

1900/1/1 0:00:00
關於進行幣安鏈(BEP2)錢包維護的公告 - 2021-11-10_OBI:RIO

親愛的用戶:幣安將於2021年11月11日14:00對幣安鏈錢包進行維護,預計需要2小時。請註意:2021年11月11日13:55,幣安鏈上的充值和提現將暫停;錢包維護完成後,充值和提現功能將重.

1900/1/1 0:00:00
從底層到應用,最全熱門元宇宙概念區塊鏈項目解析_NFT:元宇宙

元宇宙無疑是當下炙手可熱的“當紅炸子雞”。除了社交巨頭Facebook毅然換“臉”更名“Meta”外,騰訊、谷歌、字節跳動、微軟和百度等科技巨頭也紛紛“上頭”,爭相奔赴元宇宙賽道.

1900/1/1 0:00:00
ads