我有一个愚蠢的智能合约,像这样:
rotate
我想用chai进行测试
180
当我运行命令时 松露测试 我有这个错误
错误:尝试运行调用合同功能的交易,但收件人地址0xe8f29e5c4ca41c5b40ed989439ddeae4d9384984不是合同地址
答案 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处小改动:
我添加了public
关键字。最好始终定义函数的可见性。
我将view
替换为pure
。当您不从区块链/状态变量中读取数据时,请使用pure
。可以在文档here中找到更多信息。
仅供参考,您无需使用chai或mocha库。使用truffle init
命令初始化Truffle项目时,该位置已经存在。 before
关键字是Mocha库的一部分。您可以详细了解here。
最后,如果您想了解Truffle中new
和deployed
关键字之间的区别,请阅读我的线程here。