如何解决Truffle测试中的‘ReferenceError: accounts is not defined at Suite’错误
解决方法
方法1:在测试函数中注入accounts参数
Truffle测试框架会自动将以太坊账户列表作为参数传递给测试回调,你需要在对应的it或describe块的回调函数里接收这个参数,示例如下:// 错误示例(未接收accounts参数) describe('Fundraiser', function() { it('test function', function() { // 直接调用accounts[0]会触发未定义错误 }); }); // 正确示例 describe('Fundraiser', function() { it('test function', function(accounts) { // 可正常使用accounts数组,比如accounts[0]作为部署者地址 const deployer = accounts[0]; }); });方法2:提前通过web3异步获取账户列表
若不想依赖参数注入,可在测试前置阶段通过web3.eth.getAccounts()获取账户,注意需用async/await处理异步操作:describe('Fundraiser', function() { let accounts; before(async function() { accounts = await web3.eth.getAccounts(); }); it('test function', function() { // 此处可直接使用提前获取的accounts变量 }); });定位修复第59行代码
打开/Users/tsuru/fundraiser/test/fundraiser_test.js文件,检查第59行调用accounts的位置,确保已通过上述两种方法之一完成账户列表的定义,避免未初始化就直接调用。
内容的提问来源于stack exchange,提问作者kintoki
相关产品推荐
相关产品推荐

