2012-03-16 10 views
-1

RSpecを使用してJenkins Rubyプラグインをテストしようとしています。
マイemailcomputerlistener.rb:NameError:RSpecを使用した初期化されていない定数

require 'net/smtp' 
class EmailComputerListener 
    include Jenkins::Slaves::ComputerListener 
    def online(computer, listener) 
    [...] 
    end 
end 

マイemailcomputerlistener_spec.rb

require 'emailcomputerlistener' 
require 'computer' # overloaded class for computer 
require 'smtp'  # overloaded smtp class 
require 'computerlistener' # required? 

describe EmailComputerListener do 
    before :each do 
    @ecl = EmailComputerListener.new 
    [...] 
    end 
[tests] 
end 

RSpecのを実行している場合、それは言う:

NameError: uninitialized constant EmailComputerListener::Jenkins 
[row 3] 

すべてのファイルが同じディレクトリにある、私がされています別のemailcomputerlistenerでテストを実行し、テストをパスするためにコメント文をコメントアウトして実行します。しかし、明らかに元のファイルをテストする方が良いでしょう。

編集:テストはJenkins :: Slaves :: ComputerListenerに依存していないし、ComputerListenerが私のプラグインをバンドルしている宝石にも定義されている必要はありません。私がしようとしているのは、このファイルをシミュレートすることだけです.WebComputerListenerにrequire 'computerlistener'を追加することはできません。そうすれば、おそらくプラグインが破損するからです。

ありがとうございました。

+1

ディレクターからのメッセージ、direkt! – JonatanEkstedt

+0

この投稿の削除された金額: – JonatanEkstedt

答えて

0

あなたは私はエラーがEmailComputerListenerでライン3から来ていることを推測する必要がスタックトレース削除以来:

include Jenkins::Slaves::ComputerListener 

を私はまた、これはあなたがあなたの仕様で必要とあなたのcomputerlistener.rbファイルに定義されていると結論付けています。

この設定について、いくつかの悪いものがある:

  • あなたがあなたのファイルを使用してクラスを一致させる必要があります:

EmailComputerListener =>email_computer_listener.rb

  • はあなたのディレクトリ構造と一致する必要がありますあなたのモジュール:

Jenkins::Slaves::ComputerListener =>jenkins/slaves/computer_listener.rb

  • あなたは、彼らがそうrequire 'jenkins/slaves/computer_listener'スクリプトのルート・ファイルの先頭に行くべき使用またはルート

にされているファイルを要求すべきです。あなたの場合はemail_computer_listener.rb

関連する問題