在松露测试期间不是合同地址

时间:2018-11-07 19:38:39

标签: ethereum smartcontracts truffle

我有一个愚蠢的智能合约,像这样:

rotate

我想用chai进行测试

180

当我运行命令时 松露测试 我有这个错误

  

错误:尝试运行调用合同功能的交易,但收件人地址0xe8f29e5c4ca41c5b40ed989439ddeae4d9384984不是合同地址

1 个答案:

答案 0 :(得分:1)

truffle.js

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545, // Ganache GUI
      network_id: "*" // Match any network id
    }
  }
};

contracts / ProdottoFactory.sol

pragma solidity ^0.4.24;

contract ProdottoFactory  {
  function foo() pure public returns(string nome){
    return "foo";
  }
}

test / ProdottoFactory.js

var pf = artifacts.require("ProdottoFactory");

contract('ProdottoFactory', function(accounts) {
  var pfInstance;

  before(function() {
    return pf.new()
      .then(function(instance) {
        pfInstance = instance;
      });
  });

  it("should return foo", function() {
    return pfInstance.foo.call()
      .then(function(str) {
        assert.equal(str, "foo");
      });
  });
});

我对您的合同做了2处小改动:

  1. 我添加了public关键字。最好始终定义函数的可见性。

  2. 我将view替换为pure。当您不从区块链/状态变量中读取数据时,请使用pure。可以在文档here中找到更多信息。

仅供参考,您无需使用chai或mocha库。使用truffle init命令初始化Truffle项目时,该位置已经存在。 before关键字是Mocha库的一部分。您可以详细了解here

最后,如果您想了解Truffle中newdeployed关键字之间的区别,请阅读我的线程here