我有一个非常简单的合同,在混音编辑器中完全正常。
我只是想学习松露。我发起了一个空的松露项目,放置合同并成功编译。
但是truffle test
给出了以下错误
合同:
pragma solidity ^0.4.18;
contract Greetings{
string public message;
constructor() public {
message = "Hello";
}
function getGreeting() public view returns (string){
return message;
}
}
测试
var Greetings = artifacts.require("Greetings");
contract('Greetings Test', async (accounts) => {
it("check for greetings message", async () => {
let greeting = await Greetings.deployed();
let message = await greeting.getGreeting().call();
console.log(message);
});
});
错误:
Contract: Greetings Test
1) check for greetings message
> No events were emitted
0 passing (103ms)
1 failing
1) Contract: Greetings Test
check for greetings message:
TypeError: greeting.getGreeting(...).call is not a function
at Context.it (test/campaignfactory.js:7:52)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
注意:我想使用asnyc/await
。
答案 0 :(得分:1)
调用函数的方式有错误。要么使用
let message = await greeting.getGreeting.call();
或
let message = await greeting.getGreeting()
您无法混合语法。当您调用该方法时(例如getGreeting()
),web3将检查是否是通话或交易,并将为您使用正确的方法。 doc
如果您想要明确,那么您应该使用第一种方式。