truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545, // Ganache GUI
network_id: "*" // Match any network id
}
}
};
контракты / ProdottoFactory.sol
pragma solidity ^0.4.24;
contract ProdottoFactory {
function foo() pure public returns(string nome){
return "foo";
}
}
тест / 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
. Более подробную информацию можно найти в документации здесь .
К вашему сведению, вам не требуется библиотека чая или мокко. Он уже есть, когда вы запускаете проект Truffle с помощью команды truffle init
. Ключевое слово before
является частью библиотеки Mocha. Подробнее об этом можно прочитать здесь .
Наконец, если вы хотите узнать разницу между ключевыми словами new
и deployed
в Truffle, прочитайте мою ветку здесь .