Biblioteca de prueba de trufas - TypeError: Miembro no encontrado o no visible después de una búsqueda dependiente de argumentos en la biblioteca

¿Alguien puede confirmar este comportamiento y proporcionar una solución? Usando truffle testme sale el mensaje de error Member "functionName" not found or not visible after argument-dependent lookup in library A. ¿Es porque estoy tratando de escribir una prueba para una biblioteca?

a.sol

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");
  }
}

desplegar_contratos.js

var A = artifacts.require("A");

module.exports = function(deployer) {
  deployer.deploy(A);
};
¿Cuál es su script de migración?
@Ismael Actualicé la info. El contrato está migrando bien.
El problema parece estar solucionado desde Truffle v4.1.8 (núcleo: 4.1.9).

Respuestas (1)

Debe intentar importar como: - import { A } from "../contracts/A.sol"; Y use A.functionName(). Porque en solidity "library" hay un tipo especial de contratos que se usan especialmente para programar una pieza de código reutilizable. Puede pensar en esto como una función estática en cualquier lenguaje OOP. Que esto te ayude.

¡Guau! Cambiar la forma de importar una biblioteca realmente resolvió el problema. ¡Gracias!
No necesita cambiar la línea de importación, solo necesita cambiar a.functionName()porA.functionName()