如何对现有合同进行松露测试?

时间:2017-09-07 13:01:29

标签: mocha ethereum truffle

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

在松露文档中,它表示在重新部署合同时应使用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。我的目标是每次运行此测试时都参考相同的合同。

有没有办法实现这个目标?

0 个答案:

没有答案