我正在制定一个简单的以太坊合约和它的松露测试对应物,但我遇到的问题是我需要测试来调用合同的旧部署,而不是每次重新部署它。
在松露文档中,它表示在重新部署合同时应使用contract()函数,在所有其他情况下应使用mocha的describe(),但即使使用describe,geth客户端报告也会重新部署合同evey时间。
以下是测试:
var md5 = require('md5');
var AuditRecord = artifacts.require("AuditRecord");
describe('AuditRecord', function() {
before(function() {
audit = AuditRecord.at('0x30ad3ceaf3f04696d1f7c8c4fbb9cfe4f7041822');
for (var i = 0; i < 10; ++i) {
if (Math.random() < 0.3) {
audit.enter(i, i, md5("test"), md5("data"), Date.now().toFixed());
} else {
audit.enter(i, i, md5("special_case"), md5("data"), Date.now().toFixed());
}
}
return audit.LogRecord({}, { fromBlock: 0, toBlock: 'latest'});
});
it("should read data", function() {
auditLog = AuditRecord.at('0x30ad3ceaf3f04696d1f7c8c4fbb9cfe4f7041822').LogRecord({}, { fromBlock: 0, toBlock: 'latest'});
auditLog.get(function(err, data) {
console.log("\n\n\n\t.:::: testing lookup:\n")
if (err) {
console.log(err);
return false;
}
for (obj in data) {
console.log("entry: @ " + Date(data[obj].args.timestamp).toString());
console.log("\tuser: " + web3.toAscii(data[obj].args.user));
console.log("\tpatient: " + web3.toAscii(data[obj].args.patient));
console.log("\toperation: " + data[obj].args.operation);
//console.log(JSON.stringify(data[obj].args.));
}
assert(10 < data.length);
});
})
})
测试工作的意义在于它在硬编码地址中找到我之前部署的合同,但由于某种原因,它每次都会在不相关的地址上部署migrations.sol和auditrecord.sol。我的目标是每次运行此测试时都参考相同的合同。
有没有办法实现这个目标?