1

RSpecには統合テストを実行するための便利なメソッド「get」と「response.should」があることを知っています.Rakeタスクでこれら(または同じ結果を達成するための他のメソッド)をどのように使用できるか知りたいです:

desc "Check all content items with type 0 and do something"
task :my_task => :environment do
    ContentItem.where("content_type = ?", 0).each do |obj|
        get "/my_path/"+obj.value
        if (response has a certain html tag)
            perform some action on obj
        end        
    end
end

そのような rspec メソッドを実行することはできないことはわかっていますが、これは実際に実行する必要があることであり、/my_path/obj.value を開いたときに返される情報を処理できるようにする必要があります。誰か提案はありますか?

4

1 に答える 1

0

ContentItemでこのアクションを実行するためにURLを調べる必要があるのはなぜですか?なぜローカルオブジェクトを使用して何かをしないのですか?

基本的に、ここではビューコードとモデルコードを混同しているように見えます...モデルのオブジェクトはhtmlの値に依存しないようにする必要があります...ビューに情報が含まれている場合は... ContentItemモデルのメソッドであり、ビューから、またはこのrakeタスクからそのコードを呼び出します。

編集:わかりました...本当にURLを取得する必要がある場合は、RubyのNet::Httpgemを調べてください。文字通りURLを取得します。Railsはそれを標準としては行いません...ローカルURLの場合でも。

次に、hpricotやnokogiriなどのパーサーを使用して結果を解析し、必要なタグを見つけることができる場合があります。

于 2011-07-18T17:26:00.270 に答える