0

このような機能ファイルがあります

Feature: search for movies by director

As a movie buff
So that I can find movies with my favorite director
I want to include and serach on director information in movies I enter

Background: movies in database

Given the following movies exist:
| title        | rating | director     | release_date |
| Star Wars    | PG     | George Lucas |   1977-05-25 |
| Blade Runner | PG     | Ridley Scott |   1982-06-25 |
| Alien        | R      |              |   1979-05-25 |
| THX-1138     | R      | George Lucas |   1971-03-11 |

Scenario: add director to existing movie
When I go to the edit page for "Alien"
And  I fill in "Director" with "Ridley Scott"
And  I press "Update Movie Info"
Then the director of "Alien" should be "Ridley Scott"

これで、次の映画が存在する場合を渡す、このようなステップ定義があります。

Given /the following movies exist/ do |movies_table|
  movies_table.hashes.each do |movie|
  Movie.create!(movie)
end

終わり

しかし、キュウリがステップを実行すると、「エイリアン」の編集ページに移動すると、このエラーがスローされます

{:action="edit", :controller="movies"} に一致するルートがありません
(ActionController::RoutingError) ./features/support/paths.rb:20:in `path_to'

私の paths.rb には、このケースが path_to にあります

when /^the edit page for (.*)/
  m = Movie.find_by_title($1)
  edit_movie_path(m)

m がゼロになることを確認しましたが、バックグラウンドで 4 つの映画をデータベースに追加しました。「レーキ ルート」も確認しましたが、すべてのルートが存在します。

理解してください、私はレールとキュウリに非常に慣れていません。ありがとう

4

1 に答える 1

0

(.*) の周りに二重引用符がありません

when /^the edit page for (.*)/

する必要があります

when /^the edit page for "(.*)"/

説明: websteps.rbに含ま れていると仮定すると、

When /^(?:|I )go to (.+)$/ do |page_name|
  visit path_to(page_name)
end

これは、最初に を呼び出して URL を取得することを意味しpath_to('the edit page for "Alien"')ます。したがって、関数を渡す場合は、名前のみpath_toを抽出する必要があります。Alien二重引用符がないため、のみではなく$1が含まれています。そして実際に探しているのは以下のようなムービー"Alien"Alienfind_by_title

m = Movie.find_by_title('"Alien"') # Doesn't exist for sure ;)
于 2012-08-24T10:50:52.433 に答える