Тест трюфеля не проходит с TypeError - PullRequest
0 голосов
/ 27 мая 2018

У меня очень простой контракт, который прекрасно работает в редакторе ремиксов.

Я просто хотел выучить трюфель. Я инициировал пустой проект трюфеля, разместил контракт и успешно его скомпилировал.

однако 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.

1 Ответ

0 голосов
/ 28 мая 2018

Ошибка при вызове функции.Вы используете

let message = await greeting.getGreeting.call(); 

или

let message = await greeting.getGreeting()

Синтаксис нельзя смешивать.Когда вы вызываете метод (например, getGreeting()), web3 проверит, является ли вызов или транзакция, и выберет подходящий для вас. doc

Если вы хотите быть явным, используйте первый способ.

...