Ethereum 如何测试由另一个部署的契约生成的契约?
目前,我想测试一个名为Ethereum 如何测试由另一个部署的契约生成的契约?,ethereum,solidity,truffle,Ethereum,Solidity,Truffle,目前,我想测试一个名为B的契约,它是使用truffle从另一个契约Registry生成的。例如: 合同注册表 pragma solidity >=0.4.17; import "./B.sol"; contract Registry is Owned { function createContract( address userAddress) public returns( bool res
B
的契约,它是使用truffle从另一个契约Registry
生成的。例如:
合同<代码>注册表
pragma solidity >=0.4.17;
import "./B.sol";
contract Registry is Owned {
function createContract(
address userAddress)
public
returns(
bool res
)
{
// create a contract B which the owner is the user.
B b = new B(userAddress);
return true;
}
合同B
pragma solidity >=0.4.17;
contract B {
address private owner;
constructor (
address _owner
)
public
{
owner = _owner;
}
function logData(
bytes32 data,
uint timestamp
)
public
returns(bool res)
{
...
}
...
在块菌/测试中测试脚本B.js
:
const Registry = artifacts.require('./Registry.sol');
const B = artifacts.require('./B.sol');
const truffleAssert = require('truffle-assertions');
const assert = require('assert');
contract('Registry', (accounts) => {
let registry;
let B;
beforeEach(async () => {
// create a reportSummary contract from registry contract.
registry = await Registry.deployed();
// How can I retrieve the contract B's instance?
});
因为我是SOLITY方面的新手,因此我无法找到任何方法来测试函数
logData
或contractB
中的其他函数,这些函数依赖于contract注册表。是否有合适的方式或我应该更改合同设计?谢谢。您可以查看我的答案,它还有关于从导入的合同访问函数的示例
要通过web3访问该函数,只需使用Registry contract的实例,您可以调用contract B的函数您可以检查我的回答,它也有从导入的contract访问函数的示例
要通过web3访问该功能,只需使用Registry contract的实例,您可以调用contract B的功能谢谢您的回答,但我仍然无法访问新的和特定的contract B(每个contract B属于一个用户)。一旦注册合同生成了更多的合同B,我怎么知道要测试哪个合同B?似乎我只部署了带有用户地址的合同B就足以测试而不考虑注册合同。。。谢谢。谢谢回答,但我仍然无法访问新的特定合同B(每个合同B属于一个用户)。一旦注册合同生成了更多的合同B,我怎么知道要测试哪个合同B?似乎我只部署了带有用户地址的合同B就足以测试而不考虑注册合同。。。谢谢