Тестирование в Javascript во время насмешек / заглушения умного контракта Solidity - PullRequest
0 голосов
/ 15 декабря 2018

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

Edit Я должен отметить, что оба (externalCall определены в другом файле) являются файлами .sol, которые содержат код Solidity для смарт-контракта и скомпилированы трюфелем перед запуском теста.

Iнадеюсь, один из вас может дать мне некоторое представление об этом, взяв в качестве примера следующую функцию:

File1.sol

function Foo (uint _num) external pure returns(bool {
  uint externalResult = externalCall(_num);
  if(externalResult == 15) {
    return true;
  }
  return false;
}

File2.sol

function externalCall(uint _num) internal returns(uint) {
    return _num * 2;
}

ЧтоЯ хотел бы заглушить / издеваться, это функция externalCall.Я хотел бы, чтобы он возвращал (например) 14 каждый раз, когда он вызывается.Я также хочу убедиться, что он называется.

Я искал, но не смог ничего найти.Я мог бы упустить из виду вещи, так как все, что у меня есть, это немного опыта в Java (студент).Но все, что у меня есть, это:

it('Should give the right boolean based on the input to the external call.', 

    async () => {
        const testingExService = await ExService.new() // the object to test

      });
...