С помощью тестов Javascript можно получить доступ к учетным записям, которые создает TestRPC, используя:
contract('MetaCoin', function(accounts) {
// tests here can access accounts[n] to get the public keys
}
Но как я могу использовать эти адреса из теста, написанного на Solidity?
Я хотел бы сделать предложение.
В TestMetaCoin.sol
примере видно, что используется адрес владельца контракта. (См. tx.origin
) Таким образом, я не вижу причин, по которым вы не могли бы жестко закодировать адреса других учетных записей в файле библиотеки Solidity, а затем импортировать библиотеку в свой тест. Затем вы сможете $ testrpc --account="<privatekey>,balance" [--account="<privatekey>,balance"]
убедиться, что адреса в вашей библиотеке повторно используются при каждом запуске.
Вы можете делать довольно сложные вещи с помощью тестов Solidity. (См. http://truffleframework.com/tutorials/testing-for-throws-in-solidity-tests ). Однако, судя по документам по трюфелю, у меня сложилось впечатление, что они могут быть не предназначены для вашего варианта использования.
http://truffleframework.com/docs/getting_started/solidity-tests
Питер Холл
.sol
тесты служат иной цели, чем тесты.js
. Используйте Solidity для тестирования сложной внутренней логики и JavaScript для тестирования контрактов.Максимум
.js
тесты по сути являются интеграционными тестами в силу их зависимости отweb3
. Хотя это может быть правдой, их можно использовать для тестирования сложной логики внутреннего контракта точно так же, как и тест Solidity. Преимущества тестов Solidity заключаются в быстрой разработке, они сосредоточены на самой логике контракта (как вы говорите) и требуют меньше накладных расходов.