译文出自:登链翻译计划
译者:翻译小组
校对: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
Grayscale与SEC之间的裁决可能需要等三到六个月的时间:金色财经报道,Grayscale在法庭上度过了一天,现在资产管理公司以及其 Grayscale Bitcoin Trust 的投资者必须等待裁决,这可能需要三到六个月的时间。[2023/3/8 12:48:28]
);});
第一个测试:如果在质押金额没有达到阈值的情况下调用execute()函数,它将撤销交易并返回适当的错误信息。
第二个测试:连续两次调用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
Power Pool:etherscan.io上出现假的YETI合约地址:12月7日,以太坊治理代币借出协议Power Pool官方发布警告称,etherscan.io出现假的YETI合约地址。
注:YETI为Power Pool发起的Yearn生态系统代币指数(YETI)。该指数包括Yearn生态系统中的代币:YFI、SUSHI、CREAM、AKRO、COVER、K3PR、CVP和PICKLE。[2020/12/7 14:28:02]
};describe('StakerdApp',()=>{letowner;letaddr1;letaddr2;letaddrs;letstakerContract;letexampleExternalContract;letExampleExternalContractFactory;beforeEach(async()=>{//DeployExampleExternalContractcontractExampleExternalContractFactory=awaitethers
);describe('Testcontractutilsmethods',()=>{it('timeLeft()return0afterdeadline',async()=>{awaitincreaseWorldTimeInSeconds(180,true);consttimeLeft=awaitstakerContract
动态 | Scatter紧急更新以紧急修复漏洞:Scatter发布一则声明,提醒用户立即更新Scatter电脑桌面版,这是一次紧急的漏洞修复。为了安全考虑,Scatter现在不公布漏洞的内容。[2018/11/27]
);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
独家 | 币圈惊现“老鼠会” RatScam敛财比F3D更简单粗暴:继区块链项目评级机构RatingToken对庞氏游戏Fomo 3D(以下简称F3D)进行跟踪报道之后,目前市面上又出现了一系列以“Rat(老鼠)”命名的山寨合约。
与其他山寨合约一样,Rats系列也隐藏着不少安全隐患。以RatScam为例,RatingToken智能合约机器检测得分仅为2分,共存在16个可疑风险漏洞。而且从游戏主体部分的规则来看,RatScam几乎是F3D的“阉割版”:游戏只有1轮,而不像F3D理论上会一直进行下去;RatScam中团队分成高达10%,而F3D仅为2%。
另据RatingToken团队深入调研发现,RatScam还在Facebook上进行了广告投放,可见团队资金实力雄厚,是一次有备而来的圈钱行动。目前官网显示RatScam奖金池已有567.5348 ETH,RatingToken在此提醒各位注意防范风险,谨慎投资。[2018/7/27]
);});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反弹迫在眉睫?
作者|五火球教主出品|白话区块链8月底以来,公链市场持续火热,引起不少关注。另外,多链这边Cosmos生态取得持续进展,波卡插槽拍卖也已经开始了.
1900/1/1 0:00:00链闻消息,区块链体育娱乐平台Chiliz宣布与意大利足球协会(FIGC)达成合作关系,FIGC将在Chiliz旗下粉丝参与激励应用Socios.com上推出官方粉丝代币ITA.
1900/1/1 0:00:00AAB、SAMO、LIQ、SAND、MANA、DOT币币交易狂欢周,瓜分50000USDT作者AAXManager过去15分钟内已更新尊敬的AAX用户:为感谢AAX用户对币币交易的支持.
1900/1/1 0:00:00一、什麽是KuCoin合夥人計劃?我們在尋找認同KuCoin價值觀和KuCoin使命,並願意推廣KuCoin的合夥人,因此我們推出了KuCoin合夥人計劃,在該計劃中.
1900/1/1 0:00:00親愛的用戶:幣安流動性挖礦現已開放PERP/USDT流動性池。即刻添加流動性,瓜分總額2,800PERP挖礦收益,收益分配將依據用戶持有份額佔幣對池總份額比例而定.
1900/1/1 0:00:00Gate.io已于2021年8月1日上线新版流动性池,今日ETH/USDT、DOT/USDT、FIL/USDT流动性挖矿奖励池新增16天限时奖励.
1900/1/1 0:00:00