在松露上测试已部署的智能合约

时间:2018-10-21 21:50:49

标签: ethereum solidity smartcontracts truffle

我在使用松露测试合同时遇到了麻烦。我安装了最新版本的松露以及TestRPC。

据我了解,最新版本的松露带有用于测试SmartContracts的客户端,因此不再需要TestRPC。

我有一个简单的合同,我的迁移看起来像这样:

var Migrations = artifacts.require("./Migrations.sol");
var OrdersFacilitator = artifacts.require("./OrdersFacilitator.sol")

module.exports = function(deployer) {
  deployer.deploy(Migrations);
  deployer.deploy(OrdersFacilitator);
};

运行松露开发时,我看到创建了10个测试帐户。

  

帐户:

     

(0)0x627306090abab3a6e1400e9345bc60c78a8bef57

     

(1)0xf17f52151ebef6c7334fad080c5704d77216b732   //...

我的Truffle js的配置如下:

networks: {
  development: {
    host: "localhost",
    port: 9545,
    network_id: "*"
  }
}

运行合同名称时,我可以看到其部署信息:

//...
class_defaults:
{ from: '0x627306090abab3a6e1400e9345bc60c78a8bef57',
 gas: 6721975,
 gasPrice: 100000000000 },
currentProvider:
 HttpProvider {
   host: 'http://127.0.0.1:9545/',
   timeout: 0,
   user: undefined,
   password: undefined,
   headers: undefined,
   send: [Function],
   sendAsync: [Function],
   _alreadyWrapped: true },
network_id: '4447' }

网络ID和端口似乎与配置正确匹配,当我输入合同名称时我可以看到该信息,但是当我尝试获得对其的访问权限时

var facilitator;
OrdersFacilitator.deployed().then(x => facilitator = x);

我收到一个错误:

  

OrdersFacilitator尚未部署到检测到的网络(网络/工件不匹配)

我尝试删除构建文件夹并使用--reset标志迁移所有内容,但这似乎不起作用。如何测试已部署的合同

2 个答案:

答案 0 :(得分:1)

我在Truffle项目尝试相同的事情时也遇到过类似的问题。解决方案可能是将项目重置为非缓存状态。

您可以尝试使用--reset标志运行松露编译(和/或松露迁移)。这将删除build目录并重新编译所有内容。

答案 1 :(得分:0)

要解决此问题,我已经明确设置了网络选项和网络ID。

//Start Test RPC with an Explicit Network
testrpc --network-id 1337

然后,我为TestRPC创建了一个明确的网络:

networks: {
  testrpc:{
    host: "localhost",
    port: 8545,
    network_id: "1337"
  }
}

现在,当我明确迁移到新网络时:

truffle migrate --network testrpc --reset
truffle console --network testrpc

这似乎可以正确映射到正确的网络