Bibliothèque de tests de truffes – TypeError: membre introuvable ou non visible après la recherche dépendante de l’argument dans la bibliothèque

Senju

Bibliothèque de tests de truffes – TypeError: membre introuvable ou non visible après la recherche dépendante de l’argument dans la bibliothèque


Quelqu’un peut-il confirmer ce comportement et fournir une solution? En utilisant le truffle test j’obtiens le message d’erreur Member "functionName" not found or not visible after argument-dependent lookup in library A Est-ce parce que j’essaie d’écrire un test pour une bibliothèque?

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

deploy_contracts.js

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

 module . exports =   function ( deployer )   { deployer . deploy ( A ); 
 }; 

Ismael

Quel est votre script de migration?

Senju

@Ismael J’ai mis à jour les informations. Le contrat migre bien.

Senju

Le problème semble être résolu depuis Truffle v4.1.8 (core: 4.1.9).

Réponses


 Davinder Singh

Vous devriez essayer d’importer en tant que: – importez {A} de « ../contracts/A.sol »; Et utilisez A.functionName (). Parce que dans la solidité « bibliothèque » sont des types spéciaux de contrats qui utilisent spécialement pour programmer un morceau de code réutilisable. Vous pouvez considérer cela comme une fonction statique dans n’importe quel langage POO. Que cela vous aide.

Senju

Hou la la! Changer le mode d’importation d’une bibliothèque a en fait résolu le problème. Merci!

Ismael

Vous n’avez pas besoin de changer la ligne d’importation, il vous suffit de changer a.functionName() par A.functionName()

 

-, #de, #la, #ou, après, bibliothèque, dans, dépendante, introuvable, L’argument, membre, non, recherche, tests, truffes, TypeError, visible

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *