Je travaille sur un framework de test pour le logiciel que mon entreprise écrit. Notre produit est basé sur le Web et après avoir exécuté une demande RESTful je veux traiter les résultats. Je veux être capable d'avoir des validations de type activationecord dans chaque classe de commande afin qu'après son exécution, les résultats soient automatiquement testés par rapport à toutes les "validations". Cependant, je ne suis pas sûr de savoir comment faire cela. Mon code ressemble à ceci (simplifié pour montrer les parties importantes).Comment créer des validations de style activerecord en dehors de activeecord?
class CodesecureCommand
def execute
result = RestClient.post("http://#{codesecure.host_name_port}#{path}", post_data)
return parse(result) #parse simple returns a Hpricot document
end
end
class RunScan < CodesecureCommand
#What I have now
#I have to override the execute function so that it calls the local success method
#to see if it failed or not.
def execute()
result = super()
if success(result)
return true
else
end
end
def success(result)
result.search('div.transaction-message') do |message|
if message.innerHTML.scan(/Configure abuse setting for domain users successfully\./).length == 1
return true
end
end
end
#What I would like is to be able to call execute (without having to override it).
#then after it runs it calls back to this class to check
#if the regex matches the command was successful and returns true
test_success /regex/
#if test_success fails then these are called
#the idea being that I can use the regex to identify errors that happened then
#report them to the user
identify_error /regex/, "message"
identify_error /regex/, "message"
end
end
Ce que je veux est que, après la méthode d'exécution est appelée test_success et identify_error sont appelés automatiquement comme les validations dans activerecord. Quelqu'un peut-il me dire comment faire cela? Merci
Merci pour la réponse c'est ce que je cherche merci. Une question, qu'est-ce que cela nécessite ActiveSupport? Merci. –
Il utilise 'Hash # blank?' (Dans la méthode 'valid?'). Mais c'est à peu près tout, hein. Ne devrait pas être trop difficile de laisser tomber active_support. J'ai juste supposé qu'il était déjà là, parce que vous êtes dans le contexte des rails de toute façon. –
Il utilise aussi Array # extract_options !, mais c'est assez simple pour dupliquer/extraire. –