首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误:调用带有Contract.connect(签名者)的getter时,在带有Mocha,Chai,Waffle测试的Hardhat上调用还原异常

错误:调用带有Contract.connect(签名者)的getter时,在带有Mocha,Chai,Waffle测试的Hardhat上调用还原异常。

这个错误是在使用Hardhat进行测试时遇到的问题。根据错误信息,调用带有Contract.connect(签名者)的getter方法时出现了异常。

首先,让我们来解释一下错误信息中提到的一些概念和工具:

  1. Hardhat:Hardhat是一个用于以太坊开发和测试的开发框架。它提供了一套强大的工具和插件,用于编译、部署、测试和调试智能合约。
  2. Mocha:Mocha是一个JavaScript测试框架,用于编写和运行测试用例。它提供了丰富的断言库和测试运行器,可以方便地进行单元测试和集成测试。
  3. Chai:Chai是一个断言库,用于编写更具表达力的测试断言。它提供了多种风格的断言接口,可以根据个人喜好选择使用。
  4. Waffle:Waffle是一个用于以太坊智能合约测试的库。它提供了一套简洁的API,用于编写和运行合约测试,并且与Hardhat集成得很好。

现在,让我们来解决这个错误。根据错误信息,问题出现在调用带有Contract.connect(签名者)的getter方法时。这种调用方式通常用于在以太坊上执行需要签名的操作,例如修改合约状态或发送交易。

在使用Hardhat进行测试时,我们需要确保在调用带有Contract.connect(签名者)的getter方法之前,已经正确设置了签名者。签名者可以是一个以太坊账户,用于对交易进行签名和验证。

以下是解决这个错误的步骤:

  1. 确保在测试用例中正确设置了签名者。可以使用Hardhat提供的账户管理功能创建一个账户,并将其设置为签名者。例如:
代码语言:txt
复制
const [deployer, signer] = await ethers.getSigners();
  1. 在调用带有Contract.connect(签名者)的getter方法之前,使用connect方法将合约连接到签名者。例如:
代码语言:txt
复制
const contract = await Contract.connect(signer);
  1. 确保在调用getter方法时,使用正确的语法和参数。根据具体的合约和方法,确保传递正确的参数和选项。

通过按照上述步骤进行操作,应该能够解决这个错误并成功调用带有Contract.connect(签名者)的getter方法。

对于更多关于Hardhat、Mocha、Chai和Waffle的信息,以及如何使用它们进行以太坊智能合约开发和测试,请参考以下链接:

请注意,以上链接是腾讯云产品和服务的介绍链接,仅供参考。在实际使用时,请根据具体需求和情况选择适合的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Hardhat和Ethers引入并测试知名NFT智能合约

Hardhat 开发环境 如何编译合约并为其编写测试功能 本教程不涉及任何前端开发,但如果你有兴趣了解如何开始 Web3 dapp 开发,请随时 dev.to 查看教程: React 中构建...token 页面的右上角,称为“Profile Summary(资料摘要)”,将看到一个带有链接”Contract(合约)”地址: 点击它,将到 Etherscan “Contract(合约)”...我们通过添加另一个测试“应该设置正确所有”来使用所有变量 - 这将检查合约所有是否与我们部署合约返回所有相同。...一个不同错误实际是个好消息,因为这意味着正在取得进展 :) 看起来“Ether value sent is not correct(发送以太币不正确)”——这是有道理,因为我们没有合约调用中发送任何...: 如何找到特定项目的智能合约代码 如何将该代码添加到本地开发环境 如何安装和设置一个简单安全帽开发环境 如何编译合约并为其编写测试 希望这能让你对使用 Hardhat、Ethers、ChaiMocha

1.1K30

hardhat 教程及 hardhat-deploy 插件使用

部署脚本 能够测试或部署合约之前,你需要设置部署脚本,以便在测试和准备部署使用。部署脚本让你可以专注于合约最终形式,设置它们参数和依赖关系,并确保你测试是将要部署内容。...测试合约 构建智能合约,编写自动化测试是至关重要,因为这关系到用户资金。为此我们将使用Hardhat 网络,这是一个为开发而设计本地以太坊网络,是内置,也是Hardhat默认网络。...我们测试中,将使用 ethers.js 与前面部署以太坊合约进行交互,并使用Mocha[15]作为我们测试运行器。...const ownerBalance = await Token.balanceOf(tokenOwner); 可以Token上调用合约方法,通过调用balanceOf()来获取所有账户余额。...当你Hardhat Network运行合约和测试,可以 Solidity 代码中调用console.log()打印日志信息和合约变量。

3.3K30
  • Buidler 新手教程

    我们测试中,我们将使用ethers.js[24]与一节中构建以太坊合约进行交互,并使用 Mocha[25] 作为测试框架。...,通过调用balanceOf()来获取所有帐户余额。...请记住,获得全部代币发行量账户是进行部署帐户,并且使用 buidler-ethers 插件,默认情况下, ContractFactory和Contract实例连接到第一个签名。...Solidity console.log Buidler EVM运行合约和测试,你可以Solidity代码中调用console.log()打印日志信息和合约变量。...主要概念是Signer,ContractFactory和Contract,我们测试[31]部分中对此进行了解释。与测试相比,并没有什么新内容,因为当你测试合约,你实际向开发网络进行部署。

    2.6K10

    合约开发全新技术栈:Buidler + Ethers + Waffle + Typescript【译】

    Waffle (替代Truffle 测试工具) Ethereum Waffle[8] 是以太坊智能合约轻量级测试运行器。...Waffle内置了一些非常不错测试工具函数,例如用于以太坊地址,哈希和BigNumbersChai匹配器,Waffle使用原生Typescript,与Ethers.js配合非常好。...3.Waffle有一些有用Chai匹配器可用于编写合约测试,例如BigNumber匹配器和以太坊地址匹配器。 在这里[11]查看所有内容。4.简单计数测试,确保计数器正常工作。...福利: Etherscan验证 Buidler有一个超级方便插件,可用于Etherscan验证合约,此任务其实比看起来要复杂。...现在,Etherscan[15]查看合约地址,可以查看到完整合约源代码,并在网页读写合约。 最后想法 整个使用过程中,Buidler开发体验给我留下了深刻印象。

    2.1K40

    结合 Hardhat 使用 Web3

    步骤 初始化hardhat项目[4] 安装必要依赖项(包括hardhat-web3-v4)[5] 编写智能合约[6] 编译、测试和部署合约[7] 测试调用合约[8] 初始化Hardhat项目 新建项目文件夹...有了后者,我们会得到一个修改过、随时可用web3对象,它带有一个已初始化local/Hardhat provider。该对象可以项目中任何地方使用,例如测试和部署文件。...,部署接受任意数量Ether,并期望一个部署将被赋值给状态变量参数。...为了从区块链读取owner数据,我们使用了已部署合约一个实例,即lock.methods.owner().call()。调用.call()不会改变区块链状态,因此不需要钱包签名。...注意 使用.send(),我们必须在from字段中明确提供交易发送(在上面的例子中是部署账户地址)。

    12510

    Vue 测试速成班

    Mocha 没有内置断言库,所以我们必须使用 Chai :它可以设置对结果期望。Chai 有许多不同内置断言,但没有涵盖所有用例,缺失断言可以通过 Chai 插件系统导入。...如果我们不调用 use 方法,将会抛出一个错误。通过创建 Vue 局部副本,我们还可以避免污染全局对象。 我们可以通过 dispatch 方法改变 store。...我们必须将 sinonChai 作为一个插件添加到 Chai 中,以便能够对调用签名进行断言。...Mocha 可以检测并等待异步函数完成。函数内部,我们等待 onModify 方法完成,然后断言伪 commit 方法是否被调用并传入了 post 调用返回参数。 10....本文中,我们为 Vue 应用程序构建块(组件、存储、路由)创建了集成测试,并介绍了 mocking 实现一些基础。你可以现有的或未来项目中使用这些技术来避免程序 bug。

    2.7K10

    使用mocha编写node服务单元测试

    函数内会包含由it定义测试用例,用来测试测试不同分支。 完整单测至少应该包含正反方向测试,即测试函数正常逻辑和异常逻辑。...chai断言库 mocha可以搭配你喜欢任何断言库,经常使用到chai断言库。 chai提供了多种风格语法去帮助我们判断函数执行结果。...当我们异步逻辑耗时较长,需要手动地调整这个超时时间。 我们可以mocha启动传入timeout参数,或者测试用例中显示声明该测试用例超时时间。...我们也可以让替换函数主动抛出错误,来测试调用函数是否可以正确处理异常: it('测试db操作失败', async function(){ const stub = sinon.stub(db,...') }) }); }); 总结 mocha本身是一个比较简单测试框架,在此基础,我们使用一些npm包来加强我们测试过程: nyc: 提供全面的测试覆盖率 chai: 多种风格断言判断

    4K20

    测试框架 Mocha 实例教程

    Mocha(发音"摩卡")诞生于2011年,是现在最流行JavaScript测试框架之一,浏览器和Node环境都可以使用。 所谓"测试框架",就是运行测试工具。...上面这句断言意思是,调用add(1, 1),结果应该等于2。 所有的测试用例(it块)都应该含有一句或多句断言。它是编写测试用例关键。...两之间使用to或to.be连接。 如果expect断言不成立,就会抛出一个错误。事实,只要不抛出错误测试用例就算通过。...3 passing (9ms) 五、通配符 命令行指定测试脚本,可以使用通配符,同时指定多个文件。...另外,上面的测试用例里面,有一个done函数。it块执行时候,传入一个done参数,当测试结束时候,必须显式调用这个函数,告诉Mocha测试结束了。

    2.3K50

    使用 TypeScript 改造构建工具及测试用例

    答案肯定是有的,首先需要分析这些代码都是什么: Webpack打包配置文件 一些简单测试用例(使用mochachai) 知道了是哪些地方还在使用JavaScript,这件事儿就变得很好解决了...为什么要在测试用例中使用 TypeScript 测试用例使用chai来编写,(之前Postman也是用chai语法) chai提供了一系列语义化链式调用来实现断言。...也就是说测试用例编写,我们可以通过动态提示来快速书写断言,而不需要结合着文档去进行“翻译”。 ? ?...使用方式 如果是之前有写过mochachai童鞋,基本修改文件后缀+安装对应@types即可。.../node_modules/mocha/bin/mocha -r ts-node/register test/number-comma.spec.ts # 如果直接这样写,会抛出异常提示 mocha

    1.5K40

    数百次采访后,我总结了 2021 年最好用区块链开发框架

    我花了很多天时间来了解 ConsenSys 和 Ethereum 网站上推荐每一个框架,想看看哪些框架是 2021 年最好用。你可以 GitHub 看到我对这些平台实验。...区块链:Hardhat 运行时环境 / 本地,测试网,主网 有测试Waffle 维护:非常活跃 支持:活跃 开源 2....他们文档质量似乎开始下降,读起来可能会磕磕绊绊,但是如果你用谷歌搜索一下自己遇到错误,很可能会找到曾经遇到这个错误并已解决它例子。...它带有一个 UI,这样你就可以 GUI 中与区块链和合约交互。看来它有一段学习曲线,我没有花足够时间来克服障碍,但能看出它潜力很大。...Waffle 可以与你喜欢任何框架搭配使用,并且当前是搭配 Hardhat 默认工具。 如果你希望框架可以提供所有不错功能,那我不建议单独使用它。

    63520

    单元测试初体验

    单元测试框架 Mocha Mocha 是 JavaScript 一种单元测试框架,既可以浏览器环境下运行,也可以 Node.js 环境下运行。...断言库 Chai Chai 是一个针对 Node.js 和浏览器行为驱动测试测试驱动测试断言库,可与任何 JavaScript 测试框架集成。...使用该配置,你可以指定在同一间点,一次运行多少个浏览器。...sinon.js 中 spy 主要用来监视函数调用情况,sinon 对待监视函数进行 wrap 包装,因此可以通过它清楚知道,该函数被调用过几次,传入什么参数返回什么结果,甚至是抛出异常情况。...它拥有 spy 提供所有功能,区别在于它会完全替换掉目标函数,而不只是记录函数调用信息。换句话说,当使用 spy ,原函数还会继续执行,但使用 stub 就不会。

    1.6K20

    JavaScript单元测试利器Jest+mocha+chai

    一:mocha介绍mocha是一款功能丰富javascript单元测试框架,它既可以运行在nodejs环境中,也可以运行在浏览器环境中。...mocha可以良好支持javascript异步单元测试mocha会串行地执行我们编写测试用例,可以将未捕获异常指向对应用例同时,保证输出灵活准确测试结果报告。...局部变量(分为函数内使用var声明变量和函数参数变量)只能在当前函数体内调用。JavaScript变量生命周期: 它声明时初始化。局部变量函数执行完毕后销毁。...可以某事件发生直接调用函数(比如当用户点击按钮),并且可由 JavaScript 在任何位置进行调用。JavaScript 对大小写敏感。...:npm i –g chai安装istanbul:npm install -g istanbul环境配置完事儿3.1:mocha+chai实例演练我们先来个简单小例子哈~先写个add.jsfunction

    58920

    打造前端工程测试体系(1)

    引入自动化测试必要性 好处很多,包括减少错误、提高效率等,尤其是前端项目越来越庞大且多人维护,前端自动化测试就会显得尤其重要。 代价也有,毕竟需要额外学习成本。...很容易在网络找到很多这两比对,比如: TDD 与 BDD 仅仅是语言描述区别么?...维基百科 断言(程序)一文是这么解释断言程序设计中,断言(assertion)是一种放在程序中一阶逻辑(如一个结果为真或是假逻辑判断式),目的是为了标示与验证程序开发预期结果-当程序运行到断言位置...Chai 只是一个断言库,它作用是用来测试脚本中编写断言。...有些测试框架会自带断言库,但 Mocha 没有,Chai 作为单独断言库,功能很强大,这两是黄金搭档。 接下来我们将以一个简单加法模块为例来说明。完整代码可以 查看此处 。

    2.7K00
    领券