Тесты на твердость трюфелей: нет газа и превышен лимит газа

Я пытаюсь запустить базовый тест с моим контрактом, написанным с помощью тестов Truffle Solidity (тесты, написанные на Solidity).

При беге truffle testя получаю

Error: VM Exception while processing transaction: out of gas

Примечание. Это вызвано конструктором контракта new ..., который действительно делает много вещей. И я не могу ничего сломать в своем коде.

Есть ли способ заставить это работать с тестом, написанным на Solidity? Есть ли способ настроить количество газа, доступного для тестового контракта?

--

ОБНОВИТЬ:

На самом деле я понял, что изменение gasзначения конфигурации truffle.jsимеет эффект. Тем не менее, я натыкаюсь на еще один контрольно-пропускной пункт

Error: Error: Exceeds block gas limit

Я предполагаю, что у меня нет другого выбора, кроме как оптимизировать развертывание (таким образом, конструктор) моего контракта, чтобы сделать его легче?

попробуйте обходной путь в этой проблеме github: github.com/trufflesuite/truffle/issues/…

Ответы (3)

Сегодня я столкнулся с той же проблемой, но для меня проблема заключалась в том, что мой test-file.sol был слишком большим. Поэтому я разделил свои тесты на два файла, и все тесты снова прошли нормально.

В любом случае, вероятно, имеет смысл структурировать тестовые файлы в несколько небольших наборов, а не в один большой файл, который вам придется прокручивать.

Добавьте gas: 350000 в ваш файл truffle.js, мой пример ниже

module.exports = {
  networks: {
     development: {
       host: "localhost",
       port: 8545,
       network_id: "*", // Match any network id
       gas: 3500000
     }
   },
   mocha: {
    useColors: true
   }
};

Новая версия трюфеля, версия 4 на данный момент добавила в тесты проверку газа. так это сейчас нужно.

Наверное, надо сделать светлее.

Если вы используете TestRPC или частную цепочку, вы можете установить gaslimit, но это сетевое свойство. Я бы зарезервировал этот метод для устранения неполадок, то есть для подтверждения того, с чем вы имеете дело. Учтите, что нехватка газа иногда случается при заключении контракта throwsнамеренно, поэтому это может ввести в заблуждение.

Если вы не найдете способ работать в рамках бюджета, вы, вероятно, настроите себя на разочарование при попытке развертывания в действующей сети.

Надеюсь, это поможет.