5

我正在研究一个简单的以太坊合约,它是松露测试对应物,但我遇到的问题是我需要测试来调用合约的旧部署,而不是每次都重新部署它。

在 truffle 文档中,它说在要重新部署合约时应该使用 contract() 函数,而在所有其他情况下应该使用 mocha 的 describe(),但即使使用 describe,geth 客户端也会报告每次重新部署合约。

这是测试:

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。我的目标是每次运行此测试时都参考相同的合同。

有没有办法做到这一点?

4

0 回答 0