私は、私の会社が作成するソフトウェアのテストフレームワークに取り組んでいます。当社の製品はウェブベースであり、RESTfulなリクエストを実行した後、結果を処理したいと考えています。私は、各コマンドクラスでactiverecord型バリデーションを持つことができるようにして、実行後に結果をすべての「バリデーション」に対して自動的にテストするようにします。しかし、私はこれを行う方法がわかりません。私のコードはこのように見えます(重要な部分を示すために簡略化されています)。activerecordの外でactiverecordスタイル検証を作成するには?
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
は、私が欲しいのはexecuteメソッドが呼び出された後test_successとidentify_errorは自動的にActiveRecordの中のバリデーションのように呼ばれているということです。誰も私にこれをする方法を教えてもらえますか?あなたのコードではあまり見なくても、感謝
お返事ありがとうございます。私が感謝のために探しているものです。 1つの質問、それにはActiveSupportが必要ですか?ありがとう。 –
( 'valid?'メソッドで) 'Hash#blank? 'を使います。しかしそれはそれについてです、ちょっと。 active_supportを削除するのは難しいことではありません。私はちょうどそれがすでにそこにあると仮定しました。 –
Array#extract_options!も使用しますが、複製/抽出するのには簡単です。 –