Я пытаюсь запустить базовый тест с моим контрактом, написанным с помощью тестов 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
Я предполагаю, что у меня нет другого выбора, кроме как оптимизировать развертывание (таким образом, конструктор) моего контракта, чтобы сделать его легче?
Сегодня я столкнулся с той же проблемой, но для меня проблема заключалась в том, что мой 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
намеренно, поэтому это может ввести в заблуждение.
Если вы не найдете способ работать в рамках бюджета, вы, вероятно, настроите себя на разочарование при попытке развертывания в действующей сети.
Надеюсь, это поможет.
йопассерат