微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用松露为 Solidity 以太坊测试智能合约时出错

如何解决使用松露为 Solidity 以太坊测试智能合约时出错

我必须测试智能合约

文件审批合同

const ApprovalContract = artifacts.require( "../../contracts/ApprovalContract.sol");

 contract("ApprovalContract",function (accounts) {
it("initiates contract",async function () {
const contract = await ApprovalContract.deployed();
const approver = await contract.approver.call();
assert.equal(
  approver,0x8c4b9b5262f1ae1bdfb58f6579348817c4da4277,"approvers don't match"
);
});
it("takes a deposit",async function () {
const contract = await ApprovalContract.deployed();
  await contract.deposit(accounts[0],{ value: 1e18,from: accounts[1] });
  assert.equal(
  await web3.eth.getBalance(contract.address),1e18,"amount did not match"
);
});
it(
"makes the transaction when approved,approver: " + accounts[2],async function () {
  const contract = await ApprovalContract.deployed();
  const balance = await web3.eth.getBalance(contract.address);
  await contract.deposit(accounts[0],from: accounts[1] });
  await contract.approve({ from: accounts[2] });
  assert.equal(
    web3.eth.getBalance(contract.address),"didn't transfer ether"
  );
  }
);
 });

truffle compile,truffle migrate 运行成功。

当我运行命令“truffle test”时出现以下错误

enter image description here

解决方法

如果没有 .sol 合同中的函数,我不能 100% 确定,但是您的 Approval 事件可能在您的 accept 方法中错误地发出。

看看在此处的第二个示例中如何使用 accept 函数: https://docs.soliditylang.org/en/v0.8.1/types.html?highlight=approve#mapping-types

emit Approval(owner,spender,amount);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。