在 Truffle 上测试部署的智能合约
Testing Deployed Smart Contract on Truffle
我在使用 truffle 测试合约时遇到问题。我安装了最新版本的 truffle 以及 TestRPC。
据我了解,最新版本的 truffle 附带了一个用于测试 SmartContracts 的客户端,因此不再需要 TestRPC。
我有一个简单的合同,我的迁移看起来像这样:
var Migrations = artifacts.require("./Migrations.sol");
var OrdersFacilitator = artifacts.require("./OrdersFacilitator.sol")
module.exports = function(deployer) {
deployer.deploy(Migrations);
deployer.deploy(OrdersFacilitator);
};
当我 运行 truffle 开发时,我看到创建了 10 个测试帐户。
Accounts:
(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 has not been deployed to detected network (network/artifact mismatch)
我尝试删除构建文件夹并使用 --reset 标志迁移所有文件夹,但这似乎不起作用。我如何测试我部署的合约
我在尝试同样事情的 Truffle 项目中看到了类似的问题。解决方案可能是将项目重置为非缓存状态。
您可以使用 --reset 标志尝试 运行 truffle 编译(and/or truffle 迁移)。这将删除 build
目录并重新编译所有内容。
为了解决这个问题,我明确设置了网络选项和网络 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
这似乎正确映射到正确的网络
我在使用 truffle 测试合约时遇到问题。我安装了最新版本的 truffle 以及 TestRPC。
据我了解,最新版本的 truffle 附带了一个用于测试 SmartContracts 的客户端,因此不再需要 TestRPC。
我有一个简单的合同,我的迁移看起来像这样:
var Migrations = artifacts.require("./Migrations.sol");
var OrdersFacilitator = artifacts.require("./OrdersFacilitator.sol")
module.exports = function(deployer) {
deployer.deploy(Migrations);
deployer.deploy(OrdersFacilitator);
};
当我 运行 truffle 开发时,我看到创建了 10 个测试帐户。
Accounts:
(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 has not been deployed to detected network (network/artifact mismatch)
我尝试删除构建文件夹并使用 --reset 标志迁移所有文件夹,但这似乎不起作用。我如何测试我部署的合约
我在尝试同样事情的 Truffle 项目中看到了类似的问题。解决方案可能是将项目重置为非缓存状态。
您可以使用 --reset 标志尝试 运行 truffle 编译(and/or truffle 迁移)。这将删除 build
目录并重新编译所有内容。
为了解决这个问题,我明确设置了网络选项和网络 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
这似乎正确映射到正确的网络