译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
我知道,你想直接部署合约和前端,并立刻就开始在测试网上进行测试,但是......我们需要确定一切都按预期工作,而不需要在前端用户界面上进行monkey测试。
因此,在文章的下一部分,我将介绍一些开发人员应该做的事情:测试合约逻辑!
Waffle
Waffle是一个用于编写和测试智能合约的库,它与ethers-js配合得非常默契。
Waffle有很多有帮助的工具。waffle中的测试是用Mocha和Chai一起编写的。你可以使用不同的测试环境,但Waffle的匹配器(matcher)只能在chai下工作。
我们将使用Chai匹配器来验证我们所期望的条件是否已经满足。
在写完所有的测试用例后,你只需要输入yarntest,就会自动针对你的合约进行测试。
我不会解释如何使用这个库,我将专注于应该测试什么。
我们的合约已经实现了一些逻辑:
用mapping(address=>uint256)publicbalances保存用户余额
有一个最小质押金额的阀值uint256publicconstantthreshold=1ether。
Grayscale:千禧一代和Z世代将占美国选民的44%:金色财经报道,Grayscale在周四发布的一份报告中表示,比特币的崛起恰逢选民群体的成熟,他们不信任机构,并对自己的财务未来感到不安全。
《Bitcoin,Crypto,and the 2024 US Presidential Election》报告称,千禧一代和Z世代“可能是2024年之前最关键的选民群体”。Grayscale补充道,在2024年总统选举中,年轻人预计将成为历史上最大比例的选民,早期报告指出,到2024年,千禧一代和Z世代将占美国选民的44%。
美国总统候选人德桑蒂斯、拉马斯瓦米、苏亚雷斯、小RFK等都公开表达了对比特币的支持。拜登和特朗普等现任者更倾向于探索CBDC。[2023/8/4 16:19:13]
有一个最大的时间限制(deadline)uint256publicdeadline=block
);it('executerevertedbecauseexternalcontractalreadycompleted',async()=>{constamount=ethers
);it('executerevertedbecausedeadlineisreached',async()=>{//reachthedeadlineawaitincreaseWorldTimeInSeconds(180,true);awaitexpect(stakerContract
Polygon区块浏览器Polygonscan出现故障中断数小时,但网络未受影响:金色财经报道,Polygon 区块浏览器Polygonscan于本周三出现故障中断数小时,该浏览器用于监控和分析 Polygon 上的活动,不过Polygon声称在处理区块时没有遇到任何中断,Polygon 发言人透露网络上的一些节点确实不同步,但问题并不严重,区块生产从未停止过,但网络性能可能会暂时下降,目前节点已经重新同步,系统恢复正常。Polygon 联合创始人 Sandeep Nailwal在社交媒体发文称Polygonscan的确出现问题并建议用户切换到其他浏览器。(decrypt)[2023/2/23 12:24:01]
);it('externalcontractsucessfullycompleted',async()=>{constamount=ethers
);});
第一个测试:如果在质押金额没有达到阈值的情况下调用execute()函数,它将撤销交易并返回适当的错误信息。
第二个测试:连续两次调用execute()函数,质押已经完成,交易应该被撤销,防止再次调用。
第三个测试:在时间到deadline之后调用execute()函数。交易应该被撤销,因为只能在时间到deadline之前调用execute()函数。
BscScan将于今日14点进行服务器维护和升级,预计持续3小时:12月2日消息,BscScan官方发推称,将于UTC时间12月2日6点(北京时间14点)进行定期服务器维护和升级,预计持续3小时。受影响的功能包括新区块数据未更新、API服务不可用。[2021/12/2 12:45:53]
最后一个测试:如果所有的要求都满足,那么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
};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers
“狗狗币赛车”在NASCAR Xfinity系列赛中落败:在周六举行的NASCAR Xfinity系列比赛中,车手Stefan Parsons的99号雪佛兰科迈罗撞上了汽车外墙,获得了最后一名。这辆车的引擎盖和侧板上都装饰了狗狗币。狗狗币已经多次出现在NASCAR杯系列赛中。2014年5月,Reddit用户向车手Josh Wise捐赠了6500万枚DOGE,为狗狗币首次亮相NASCAR比赛。(U.Today)[2021/6/20 23:51:27]
);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反弹迫在眉睫?
在与该行业进行了两年的反复交涉后,全球反监管机构最终敲定了它的加密货币指南。尽管最终版本对某些有争议的定义作出了可喜的澄清,但业内人士警告称,关键细节其实在执行过程中.
1900/1/1 0:00:00親愛的ZT用戶:ZT創新板即將上線BCT,並開啟BCT/USDT交易對。具體上線時間如下:交易:2021年11月14日15:00;BCT項目簡介:BCT是BinanceSmartChain智能链.
1900/1/1 0:00:00InternetofEnergyNetwork(IOEN)BonanzaweekstartsNovember15th04:00UTCtoNovember22th04:00UTC.The$11.
1900/1/1 0:00:001XProtocol(POT)TokenSaleResultTheGate.ioStartupXProtocol(POT)saleresultisasfollows:POTStartupSale.
1900/1/1 0:00:0011月11日下午17:00,Dreamverse宇宙守护者NFT限定盲盒将在Gate.ioNFT魔盒独家上线,首日解锁盲盒300个,单个盲盒作品售价9.9USDT,数量有限,先到先得.
1900/1/1 0:00:00比特币此轮上涨,主要是在宏观资金层面、比特币采用率提升、机构和大户增持,以及内在技术升级等诸多因素推动下实现了持续增长.
1900/1/1 0:00:00