Библиотека тестов трюфелей - TypeError: элемент не найден или не отображается после поиска в библиотеке, зависящего от аргумента

Может ли кто-нибудь подтвердить это поведение и предоставить решение? Используя 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);
};
Какой у вас сценарий миграции?
@Ismael, я обновил информацию. Контракт мигрирует нормально.
Проблема, кажется, исправлена, начиная с Truffle v4.1.8 (ядро: 4.1.9).

Ответы (1)

Вы должны попытаться импортировать как: - import { A } from "../contracts/A.sol"; И используйте A.functionName(). Потому что в солидности «библиотека» — это особый тип контрактов, которые специально используются для программирования повторно используемого фрагмента кода. Вы можете думать об этом как о статической функции на любом языке ООП. Пусть это поможет вам.

Ух ты! Изменение способа импорта библиотеки фактически решило проблему. Спасибо!
Вам не нужно менять строку импорта, вам нужно только изменить a.functionName()наA.functionName()