2011-06-13 3 views
2

l'erreur dit "ArgumentError: mauvais Nombre d'arguments (0 pour 1)" pour:ArgumentError: mauvais Nombre d'arguments (0 pour 1) Unité Rails test

def test_auth 
    #check that we can login we a valid Usuario 
    assert_equal @bob, Usuario.autenticar("bob", "test") 
end 

Mais, autenticar prend 2 arguments:

def self.autenticar(usuario, clave) 
    u=find(:first, :conditions=>["usuario = ?", usuario]) 
    return nil if u.nil? 
    return u if Usuario.encrypt(clave, u.salt)==u.clave 
    nil 
end 

Que se passe-t-il?

+1

Avez-vous vérifié quelle ligne est à l'origine de l'erreur? * 0 pour 1 * signifie qu'un argument était attendu mais que 0 a été donné, il est donc peu probable que ce soit l'appel de 'autenticar'. – mikej

+1

apparemment l'erreur se produit sur cette ligne: retourner u si Usuario.encrypt (clave, u.salt) == u.clave – tiiin4

+2

Il semble que soit «u.salt» ou «u.clave» est en fait une fonction qui attend à au moins un paramètre. – Kai

Répondre

0

Comme indiqué dans la section des commentaires, la méthode clave au sein de autenticar attendait un argument et n'en obtenait pas.

Questions connexes