3

次のようにいくつかのファイルが必要ですfeatures/support/env.rb

['/helpers/*', '/pages/*', '/models/*'].each do |path|
  Dir[File.dirname(__FILE__) + path].each { |file| require file }
end

(テストを実行する前に、テストユーザーやその他のものを作成したいので、これを行います。)

しかし、Cucumber がファイルをloadロードするときのように、大量の警告が表示されるため、これらのファイルは Cucumber によってロードされているようです。

/home/andrey/dev/project/features/support/models/my_class.rb:2: warning: already initialized constant MyClass::MY_CONSTANT

シナリオ開始時。これらの警告を取り除くにはどうすればよいですか?

4

2 に答える 2

1

silence_warningsコードをブロックでラップできます。

silence_warnings do
  ['/helpers/*', '/pages/*', '/models/*'].each do |path|
    Dir[File.dirname(__FILE__) + path].each { |file| require file }
  end
end

テスト フレームワークでうまく機能する方法で、何をしようとしても、おそらくより良い方法がありますが、上記のコードはあなたの差し迫った質問を処理するはずです。

于 2013-03-19T20:00:03.683 に答える
0

おそらく、キュウリの Before フックでヘルパーとモデルをセットアップできます。

before フックを 1 回だけ実行するための推奨される方法は、グローバル変数を使用することです。

Before do 
  if !$already_required
    ['/helpers/*', '/pages/*', '/models/*'].each do |path|
      Dir[File.dirname(__FILE__) + path].each { |file| require file }
    end
    $already_required = true 
  end 
end 

( https://github.com/cucumber/cucumber/wiki/Hooks#running-a-before-hook-only-once )

于 2013-03-23T11:34:21.060 に答える