火星链 火星链
Ctrl+D收藏火星链
首页 > 火必下载 > 正文

ETH:scaffold-eth 挑战:测试覆盖率(Part3)

作者:

时间: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。

Cathie Wood:Grayscale将赢得诉讼,Coinbase是最合规友好的交易所:金色财经报道,ARK Investment Management首席执行官Cathie Wood对彭博社表示,她认为 Grayscale 将赢得与SEC的诉讼,而Coinbase是最合规友好的交易所。[2023/8/8 21:31:01]

有一个最大的时间限制(deadline)uint256publicdeadline=block

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

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

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

);});

第一个测试:如果在质押金额没有达到阈值的情况下调用execute()函数,它将撤销交易并返回适当的错误信息。

FTX债权人:FTX或被追讨25亿美元贷款,建议先起诉Genesis再起诉Grayscale:3月7日消息,FTX债权人发推称,FTX可能会被追讨25亿美元的Genesis贷款,这些贷款是从被盗的客户资金中以欺诈方式偿还的,“在我看来,更明智的做法是先起诉Genesis,然后在成功(或不成功)之后,再起诉Grayscale,这样就不会通过小行动(2.9亿美元)危及大行动(25亿美元)”。[2023/3/7 12:46:37]

第二个测试:连续两次调用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

TwitterScan完成456万美元种子轮融资:9月24日消息,Web3去中心化社会识别平台 TwitterScan宣布完成456万美元种子轮融资,Redpoint Ventures领投,Sky9 Capital、UpHonest Capital、KuCoin Ventures、Huobi Ventures、Gate Labs、Mirana Ventures、Element、NGC、Antalpha Ventures、7upDAO、Redline Dao、Cobo Ventures、LingFeng Capital、Fenbushi US、CyberConnect、SNZ、Viabtc Capital、SF Capital、MetaStone Capital、OneBoat Capital、BitCoke Ventures、MEXC Ventures、Alchemy Pay、Nstone和YM Capital参投。

据悉,TwitterScan由MetaScan Labs创立,将利用这笔资金加速其 DID生态系统和轻量级社交平台的发展,并与CyberConnect和Link3合作开发.NFT DID社交基础设施和构建Web3域名系统。(Globenewswire)[2022/9/24 7:18:22]

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

Web3教育科技初创公司Outscal完成150万美元种子轮融资:金色财经报道,Web3教育科技初创公司Outscal宣布完成150万美元种子轮融资,早期风险投资公司 Kalaari Capital参投。Outscal是一家提供游戏开发教育的初创公司,现在正在扩大其产品范围,以获取希望在 Web 3.0 中构建项目的用户,以提升游戏行业的人才水平,帮助他们在游戏开发和 Web 3 职业生涯中表现出色。(startupstorymedia)[2022/9/22 7:12:18]

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

Seascape COO Nicky Li:NFT 映射的是传统世界的非同质化资产:2021年03月15日晚,由Gate.io主办的直播专访节目《酒局币赴》邀请到Seascape Co-Founder&COO Nicky Li直播分享近期最新发展。直播期间Nicky Li与Gate.io合伙人酒儿就NFT的发展前景及游戏化DeFi等相关话题进行了探讨与交流。

Nicky Li 表示,Seascape是一个围绕游戏化DeFi协议和NFT数字资产的去中心化游戏生态系统,同时也是一个建立在Substrate上的可扩展的游戏平台,旨在为全球游戏玩家和NFT投资者构建一站式解决方案。Nicky还指出,以传统世界的资产类比,目前加密资产还集中在同质化资产上(金钱、股票等),而 NFT 映射的是传统世界的非同质化资产(艺术品、房产等)。NFT很有可能发展为区块链中除了金融的第二大的应用场景。Seascape 在 NFT 领域布局很深,野心很大,未来还有极大的增长空间。而Play to Earn(边玩边赚)更是一个颠覆性玩法,通过和 DeFi 融合,将极大激励玩家参与到游戏中来,让他们在游戏中不但能收获乐趣,更能获得收益。游戏+DeFi+NFT的模式将为Seascape吸引来活跃的用户和优秀的开发者,从而实现自身创建一个激励性的游戏生态系统,让玩家、开发者和投资者可以共同创造一个新的去中心化数字经济体系的终极目标,进而推动区块链的发展。[2021/3/16 18:47:13]

);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反弹迫在眉睫?

标签:CONSTAETHTRAConnector CoinBitcoin InstantBethereumTRACE价格

火必下载热门资讯
GATE:Gate.io Listing Vote #222 Gaia Everworld(GAIA) Voting Result & Listing

ThelistingvotecampaignforGate.ioListingVote#222-GaiaEverworldhascometoanend.

1900/1/1 0:00:00
比特币:后劲十足 | 比特币年内4次突破新高 还会有第5次吗?

今年比特币给我们带来了太多的惊喜。自4月13日、10月20日不断突破新高以后,今天比特币再次突破历史新高,市场对于第四季度的加密货币走势更加期待.

1900/1/1 0:00:00
Chain:Chainlink预言机在智能合约中的77种应用方式(三)

本文是“Chainlink在智能合约中的77种应用方式”的第三篇文章,旨在介绍智能合约是如何通过Chainlink连接链下数据,并激活一系列全新的应用场景的.

1900/1/1 0:00:00
EDGE:教程 | 三分钟学会如何领取 ENS 空投

以太坊名称服务(ENS)正在推出一个DAO,在现实世界中由开曼群岛基金会(CaymanIslandsFoundation)代表。如果您曾经拥有ENS名称,您就有资格获得$ENS治理代币.

1900/1/1 0:00:00
EFI:欧易OKEx上线Ethereum Name Service (ENS) 的公告

尊敬的欧易OKEx用户:欧易OKEx上线EthereumNameService(ENS),具体时间如下:1.ENS充值:11月9日8:00(HKT)2.ENS/USDT的市场交易:11月9日8:.

1900/1/1 0:00:00
CRYP:CRO(Crypto.com Coin)

項目簡介:Crypto.com是一家高性能的區塊鏈公司,支持二維碼支付解決方案Crypto.comPay,允許用戶在任何地方使用手機進行加密支付或支付.

1900/1/1 0:00:00