0

したがって、機能ファイルには、ログインのバックグラウンドステップがあります。

Given /^I login$/ do
  user = Factory(:user)
  visit '/login'
  fill_in("login", :with => user.login)
  fill_in("password", :with => user.password)
  click_button("Login")
  @current_user = user
end

次のステップでは、user_idを含めることができるようにしたいのですが、ログインした@current_userを取得する方法がわかりません。

Given a post exists with name: "My Post", category_id: 3, user_id: ?????

@current_userを使用して正しい関係を作成するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1

このように言い換えると:

Given I created a post with the title "My Post" in the "foobar" category

次に、それをどのように実装する必要があるかについて最も明白なはずです。

Given /^I created post with the title "([^\"]+)" in the "([^\"]+)" category/ do |title, category|
    current_user.posts.create!(
        :title => title, 
        :category => Category.find_or_create_by_name(category))
end

明らかに、これは関連付けをどのように構築したかによって異なりますが、うまくいくはずです。Factory Girl を使用している場合は、次のようになります。

Factory.create(:post, :category => ..., :user => current_user)

Baldu がステップ定義からレコード ID を除外すると言っているように、システムの動作方法ではなく、キュウリの仕様がユーザーに表示され、実行されるものであることを忘れないでください。

于 2009-12-08T22:50:36.860 に答える
0

ID を渡そうとするのではなく、ステップで ID を把握できるようにします。

Given /^a post exists with name: "([^\"]+)", category_id: (\d+)$/ do |name, category_id|
  @post = Post.create!(:name => name, :category_id => category_id, :user_id => @current_user.id)
end

これが私のコードだったら、私:category_idもそこから抜け出すでしょう。シナリオの説明に出てくるオブジェクト ID のような技術的なものは、私がレベルが低すぎる兆候だと考えています。

于 2009-12-08T21:26:28.040 に答える