Я хочу использовать свойство и метод контракта с помощью web3js:
версии:
"ganache-cli": "^6.2.3",
"mocha": "^6.0.1",
"solc": "^0.5.0",
"web3": "^1.0.0-beta.37"
Imooc.sol:
pragma solidity ^0.5.0;
contract Course {
string public name;
constructor(string memory _name) public {
name = _name;
}
function getName() public view returns (string memory) {
return name;
}
}
Этот контракт хорошо работает в ремиксе.
В моем проекте я использую мокко для проверки контракта.
course.spec.js:
const path = require('path');
const assert = require('assert');
const Web3 = require('web3');
const web3 = new Web3('ws://localhost:8545');
const Imooc = require(path.resolve(__dirname, '../src/compiled/Imooc.json'));
let accounts;
describe('test', () => {
before(async () => {
accounts = await web3.eth.getAccounts();
myCourse = await new web3.eth.Contract(Imooc.Course.abi, accounts[0]);
myCourse.deploy({
data: Imooc.Course.evm.bytecode.object,
arguments: ['vue course']
}).send({
from: accounts[0]
});
});
it('test 1', async () => {
const name = await myCourse.methods.name().call();
// const name = await myCourse.methods.getName().call();
console.log(name);
})
});
Я не знаю, почему такой простой код не может работать, я смотрю документы и проблемы web3js, но не могу решить. И я пытаюсь обновить ganache до 6.3.0, web3js до beta.47, ничего не изменилось.