下面是我的代码:
const { expect } = require("chai");
const hre = require("hardhat");
describe("JaiToken contract", function() {
let Token;
let jaiToken;
let owner;
let addr1;
let addr2;
let tokenCap = 50000000;
let tokenBlockReward = 20;
beforeEach(async function () {
Token = await ethers.getContractFactory("JaiToken");
[owner, addr1, addr2] = await hre.ethers.getSigners();
jaiToken = await Token.deploy(tokenCap, tokenBlockReward);
});
describe("Deployment", function () {
it("Should set the right owner", async function () {
expect(await jaiToken.owner()).to.equal(owner.address);
});
it("Should assign the total supply of tokens to the owner", async function () {
const ownerBalance = await jaiToken.balanceOf(owner.address);
expect(await jaiToken.totalSupply()).to.equal(ownerBalance);
});
it("Should set the max capped supply to the argument provided during deployment", async function () {
const cap = await jaiToken.cap();
expect(Number(hre.ethers.utils.formatEther(cap))).to.equal(tokenCap);
});
it("Should set the blockReward to the argument provided during deployment", async function () {
const blockReward = await jaiToken.blockReward();
expect(Number(hre.ethers.utils.formatEther(blockReward))).to.equal(tokenBlockReward);
});
});
describe("Transactions", function () {
it("Should transfer tokens between accounts", async function () {
// Transfer 50 tokens from owner to addr1
await jaiToken.transfer(addr1.address, 50);
const addr1Balance = await jaiToken.balanceOf(addr1.address);
expect(addr1Balance).to.equal(50);
// Transfer 50 tokens from addr1 to addr2
// We use .connect(signer) to send a transaction from another account
await jaiToken.connect(addr1).transfer(addr2.address, 50);
const addr2Balance = await jaiToken.balanceOf(addr2.address);
expect(addr2Balance).to.equal(50);
});
it("Should fail if sender doesn't have enough tokens", async function () {
const initialOwnerBalance = await jaiToken.balanceOf(owner.address);
// Try to send 1 token from addr1 (0 tokens) to owner (1000000 tokens).
// `require` will evaluate false and revert the transaction.
await expect(
jaiToken.connect(addr1).transfer(owner.address, 1)
).to.be.revertedWith("ERC20: transfer amount exceeds balance");
// Owner balance shouldn't have changed.
expect(await jaiToken.balanceOf(owner.address)).to.equal(
initialOwnerBalance
);
});
it("Should update balances after transfers", async function () {
const initialOwnerBalance = await jaiToken.balanceOf(owner.address);
// Transfer 100 tokens from owner to addr1.
await jaiToken.transfer(addr1.address, 100);
// Transfer another 50 tokens from owner to addr2.
await jaiToken.transfer(addr2.address, 50);
// Check balances.
const finalOwnerBalance = await jaiToken.balanceOf(owner.address);
expect(finalOwnerBalance).to.equal(initialOwnerBalance.sub(150));
const addr1Balance = await jaiToken.balanceOf(addr1.address);
expect(addr1Balance).to.equal(100);
const addr2Balance = await jaiToken.balanceOf(addr2.address);
expect(addr2Balance).to.equal(50);
});
});
});
这是我的错误:
describe("JaiToken contract", function() {
^
ReferenceError: describe is not defined
at Object.<anonymous> (/Users/owner/Desktop/HTML/JaiToken/Jai-Token/test/JaiToken.js:4:1)
at Module._compile (node:internal/modules/cjs/loader:1097:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
Node.js v17.4.0
我期望运行的所有7个测试都将在终端中通过并 checkout ,但它抛出了描述错误。我多次查看了我的代码并研究了此错误,但无法找出错误所在。我正在使用VS代码作为我的编辑器,或者可能我没有下载正确的东西。此合同用于将功能应用到我的令牌,如设置余额、上限、确定是Owner,并为在区块链上添加交易的人设置区块奖励。我也已经检查了这个文件在测试文件中,这些都是我正在运行的测试。请帮助!
1条答案
按热度按时间soat7uwm1#
您当前正在使用 const hre = require(“hardhat”) 导入 hardhat 库,但您根本没有导入ethers库。要修复此错误,您可以尝试在文件顶部的任何其他代码之前添加以下代码行: