2012-03-16 3 views
-1

Я пытаюсь проверить мой плагин Jenkins Ruby с RSpec.
Мой 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] 

Все файлы находятся в том же каталоге, я был запуск моих тестов на отдельном почтовом компьютере с помощью оператора include, закомментированного для прохождения тестов. Но было бы лучше проверить исходный файл.

Редактировать: Тест не полагается на Jenkins :: Slaves :: ComputerListener, а также не должен, ComputerListener определяется в gem. Я собираю свой плагин. Все, что я пытаюсь сделать, это имитировать этот файл, я не могу добавить require 'computerlistener' в EmailComputerListener, так как это может сломать плагин.

Спасибо.

+1

Det där lägger du av med, direkt! – JonatanEkstedt

+0

Kan stolt meddela att du blivit tilldelad en down vote av mig :) – JonatanEkstedt

ответ

0

, так как вы удалили StackTrace мне нужно угадать, что ошибка происходит из линии 3 в вашем EmailComputerListener:

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.

Смежные вопросы