Может ли кто-нибудь подтвердить это поведение и предоставить решение? Используя truffle test
я получаю сообщение об ошибке Member "functionName" not found or not visible after argument-dependent lookup in library A
. Это потому, что я пытаюсь написать тест для библиотеки?
А.соль
pragma solidity 0.4.21;
library A{
function functionName(uint256 a, uint256 b) public pure returns(bool){
return (a == b);
}
}
TestA.sol
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/A.sol";
contract TestA {
function test_functionName() {
A a = A(DeployedAddresses.A());
bool expected = false;
Assert.equal(a.functionName(1, 0), expected, "Comparing: 1 is not 0");
}
}
deploy_contracts.js
var A = artifacts.require("A");
module.exports = function(deployer) {
deployer.deploy(A);
};
Вы должны попытаться импортировать как: - import { A } from "../contracts/A.sol"; И используйте A.functionName(). Потому что в солидности «библиотека» — это особый тип контрактов, которые специально используются для программирования повторно используемого фрагмента кода. Вы можете думать об этом как о статической функции на любом языке ООП. Пусть это поможет вам.
a.functionName()
наA.functionName()
Исмаэль
Сенджу
Сенджу