代码之家  ›  专栏  ›  技术社区  ›  johnny 5

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

  •  1
  • johnny 5  · 技术社区  · 8 年前

    我用松露测试合同有困难。我安装了最新版本的松露以及一个testrpc。

    据我所知,Truffle的最新版本附带了一个用于测试智能合约的客户端,因此不再需要TestRPC。

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

    var Migrations = artifacts.require("./Migrations.sol");
    var OrdersFacilitator = artifacts.require("./OrdersFacilitator.sol")
    
    module.exports = function(deployer) {
      deployer.deploy(Migrations);
      deployer.deploy(OrdersFacilitator);
    };
    

    当我运行Truffle Development时,我看到创建了10个测试帐户。

    账户:

    (0)0x627306090ABA3A6E1400E9345BC60C78A8BEF57

    (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尚未部署到检测到的网络(网络/项目不匹配)

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

    2 回复  |  直到 8 年前
        1
  •  1
  •   Shane Fontaine    8 年前

    我也看到过类似的问题,松露项目也在尝试同样的事情。解决方案可能是将项目重置为非缓存状态。

    您可以尝试使用--reset标志运行truffle compile(和/或truffle migrate)。这将删除 build dir并重新编译所有内容。

        2
  •  0
  •   johnny 5    8 年前

    为了解决这个问题,我已经明确地设置了网络选项和网络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
    

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