1

初めてCucumberを試してみたところ、問題が発生しました。RyanB の気の利いた認証ジェネレーターを使用しようとしていますが、Cucumber 機能を実行するときにヘルパー メソッドを使用できないようです。

問題を引き起こす私の機能の一部:

when I am on the new book page                                   # features/step_definitions/web_steps.rb:18
      undefined local variable or method `current_user' for #<Cucumber::Rails::World:0x13a3b2a> (NameError)
      ./features/support/paths.rb:15:in `path_to'
      ./features/step_definitions/web_steps.rb:19:in `/^(?:|I )am on (.+)$/'
      features/user_story.feature:30:in `When I am on the new book page'

サポート/paths.rb:

when /the new book page/
  user_path(current_user)+'/books/new'

routes.rb :

resources :users do
  resources :books
end

認証ヘルパー メソッド (current_user など) を提供するコードは、lib/ フォルダー内にあります。私はもう試した:

require "#{Rails.root}/lib/authentication"

私のenv.rbでは、それは何もしていないようです。では、代わりにここで何をすべきでしょうか? これには簡単な解決策があるはずだと思いますが、それは私の頭を悩ませているだけです。

追加情報

宝石環境:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.9.2 (2010-03-04 patchlevel -1) [i386-darwin9.8.0]
  - INSTALLATION DIRECTORY: /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%rails3beta
  - RUBY EXECUTABLE: /Users/ekoslow/.rvm/rubies/ruby-1.9.2-head/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%rails3beta/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-9
  - GEM PATHS:
     - /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%rails3beta
     - /Users/ekoslow/.rvm/gems/ruby-1.9.2-head%global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
     - :sources => ["http://gems.rubyforge.org", "http://gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org
     - http://gems.github.com

また、Rails 3.0.0.beta を実行していますが、この場合は関係ないと思います。

4

3 に答える 3

2

おそらく、あなたのアプリケーションでは、新しい本のページを表示するためにログインする必要があります。

その場合、「ログインしている」ことがこのテストの前提条件であるため、Givens に含まれている必要があります。

したがって、[ログインしている場合] でテストを開始し、[ログインしている場合] コードを使用して current_user を定義します。

于 2010-03-06T22:32:18.120 に答える
0

インスタンス変数を作成しない

http://www.francisfish.com/debugging_cucumber_scripts_cucumber_and_devise_authenticati.htmのようなものを使用してログインします

(devise プラグインに関する部分までスクロールします)

このコード例は devise gem 用ですが、必要なことはログイン ページの適切なフィールドに入力することだけです。

これにより、GUI を実行し、アプリのクライアントになります。

于 2010-03-16T18:40:59.387 に答える
0

current_user は Controller コンテキストでのみ定義されます。きゅうりの仕様には、外部データしかありません。

URL に直接アクセスするのではなく、ボタンをクリックすることをお勧めします。したがって、この URL がどのようなものか、またはクリックして移動できる場所を知る必要があります。

于 2010-03-05T22:34:32.517 に答える