首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“所有者”帐户在“白帽测试套件”中以非零DAI余额开始。

“所有者”帐户在“白帽测试套件”中以非零DAI余额开始。
EN

Stack Overflow用户
提问于 2022-02-20 01:03:49
回答 1查看 490关注 0票数 0

在编写单元测试时,我使用了Hardhat的主板分叉,对于测试,我想断言owner帐户的初始DAI余额是0。但是,当代码到达断言assert(ownerDai.isZero());时,断言失败。下面是一个测试:

代码语言:javascript
复制
const { assert } = require("chai");
const { ethers } = require("hardhat");
const ERC20ABI = require('../external_ABI/ERC20.json'); // ERC20 abi for interacting with DAI

const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f";

describe("SimpleTest", function () {
    it("Test that owner DAI balance is 0", async function () {
        const provider = ethers.provider;
        const [owner] = await ethers.getSigners();
        const DAI = new ethers.Contract(DAI_ADDRESS, ERC20ABI, provider);

        ownerDaiBalance = await DAI.balanceOf(owner.address);
        assert(ownerDaiBalance.isZero()); // Assertion fails here
    });
});

如果我打印ownerDaiBalance来控制台,它就会显示余额实际上等于10008133730236507217。为什么ownerDaiBalance非零开始?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-20 01:03:49

我发现,在代码块#14189520,这是我要分叉的块,owner帐户实际上在Ethereum上有一些DAI。这只是价值10美元的DAI,但这也解释了为什么我的初始余额是1000813373023650721,而不是预期的0。

我将owner添加到我的Metamask帐户中,结果发现owner还有其他ERC20令牌:

我想现在的煤气费太高了,任何人都不能考虑把这些资金转移出去。

无论如何,作为解决办法,我添加了addr1作为单元测试的第二个帐户,它一开始没有任何DAI:

代码语言:javascript
复制
const [owner, addr1] = await ethers.getSigners();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71190549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档