Bonjour,
On m'a donné un test Rspec et à partir de ce test je dois écrire une classe qui retourne un Hash.
Seulement là je suis étonné de la fin du test.
Si on admet un Hash comme suit:
object = { :name => 'John' , :lastname => 'Doe'}
et que la fin du test ressemble à ça :
expect(object).to be_an_instance_of(Hash)
expect(object.name).not_to be_nil
On est bien d'accord qu'il n'est pas possible de faire
object.name
sur un Hash ?
PS: c'est pour un recrutement, j'ai le test qui est écrit et je dois implémenter la classe.
Tu ne peux pas faire object.name car ton hash n'a pas de méthode name. Il faut faire object[:name]
Voici la solution que j'ai trouvé .
J'ai override Hash
class Hash
def method_missing(m, *args, &block)
self[m.to_sym]
end
end
Bien entendu je vous laisse le plaisir de gérer les erreurs si la clef n'exite pas, si la clef est une chaine de caratére ou un symbole, etc...