2011-10-19 10 views
1

私はキュウリのシナリオを作成して、「投稿の編集」ページの要素が読み込まれているかどうかを確認しようとしています。しかし、私の問題は、ページに向けるパスを作成する方法がわからないことです。キュウリシナリオでマッピングするオブジェクトIDを持つパスを作成する

一般的なパスは何かのようである:ここで/投稿/ ID /編集
すなわち/投稿/ 11 /編集

は私posting.featureシナリオが

ある
# Editing existing post 
Scenario: Saving the edits to an existing post 
    Given I am logged in 
    Given there is a posting 
    Given I am on the edit posting page 
    When I fill in "posting_title" with "blah" 
    And I fill in "posting_location" with "blegh" 
    When I press "Update posting" 
    Then I should see "Posting was successfully updated." 

私はいくつかの工場の周り手を出し女の子のものですが、私はそれを適切に使用する知識がありません(解決策を提供する場合)、そして関連する例を見つけることができませんでした。 私は「Pickle」に関しても多くの提案を見てきましたが、可能であれば、私は経験が限られているので、物事を簡単に見えるようにする道を避けたいと思います。

ありがとう!

答えて

1

ウェブサイトに誰かが編集ページを表示するリンクがありますか?

Given I am on the homepage 
And I follow "Posts" 
And I follow "Edit" 

これは、テキストの投稿をしている自分のホームページ上のリンク、および編集と呼ばれる結果ページ内の別の1があることを前提としていますように、あなたは何かを行うことができます。これは、これを達成するための最良の方法です。なぜなら、テストしているページへの直接的な経路が必要であるからです。これらの手順はまた、あなたがGiven I am on the edit posting pageとそこに行ったよう

あなたはまた、カスタム・ステップを作ることができweb_steps.rbで提供されており、コードは次のようなものになるだろう。もちろん、あなたもI am on the edit posting page for posting 11のように一般化することができ

Given /^I am on the edit posting page$/ do 
    visit("/posting/11/edit") 
end 

を。しかし、一般的に、キュウリ試験は受け入れ試験です。これは、このようなことをバイパスしないことを意味します。クリックできる編集ページへのリンクが必要です。

+0

提案ありがとうございました:)!私はそれを試してみる(それはうまくいくようだ)。私は実際にファクトリーガールを使って解決策を考え出しましたが、私のランキングがとても低いので私の解決策を投稿することはできません。私ができるまでにはもう7時間はかかるでしょう。 – pka

0

私は解決策を考え出しましたが、それがどれほどきれいであるかという点ではその妥当性についてはわかりません。私はファクトリーガール(宝石をインストール)を使用して終了しました。 私は自分のシナリオを同じにしました。


の下で機能/ step_definitionsは、私は内側に、以下のファイルfactories.rbを作成posting_steps.rb 機能/サポートアンダー

Given /^there is a posting$/ do 
    Factory(:posting) 
end 


を作成しました:

Factory.define :posting do |f| 
    f.association :user 
    f.title 'blah' 
    f.location 'Some place' 
end 

私のパスにあります。RBは、私はそれがどのように動作

when /the edit posting page/ 
    edit_posting_path(Posting.first) 



使用(あるいは、少なくとも私はそれがうまくいくと思うか)が実行される

Given there is a posting 


として、posting_step.rbがあるということです呼び出されました(工場(:投稿)は基本的にFactory.create(:投稿)です)。 oryの定義はfactories.rbで作成しました。これにより、転記のインスタンスが登録されます。その後

paths.rb

when /the edit posting page/ 
    edit_posting_path(Posting.first) 

は、最終的に/ 1 /編集を掲示/似ている可能性のパスを取得するには、インスタンスからIDを渡されると、テストはその方​​法で継続中!

修正が必要な場合は、私がロープを習っている間にお知らせください。 うまくいけば、これはそこに他の初心者を助けるでしょう!

+0

どのように動作しているかはまったく正しいです。このソリューションは機能しますが、一般的に受け入れテストのポイントは、編集ページが常に最初の投稿用であることを偽って回避することです(動作しますが)。あなたはあなたのウェブサイトから利用可能なリンク/アクションを使用したいと思う。しかし、これはうまくいくと思います。 – MrDanA

+0

Ahh、gotcha。おかげでありがとう! – pka

関連する問題