2017-02-01 3 views
1

Я создал несколько плагинов Redmine 3, и теперь я хочу закодировать тесты, чтобы обеспечить лучшую стабильность, если это возможно.Как создать функциональные тесты для плагина Redmine 3

Но теперь я не могу создать что-либо, что работает, я попытался посмотреть другие тесты плагина, и я не могу воспроизвести все, чтобы работать в любом случае.

Вы, ребята, можете дать мне простой пример холста, как продолжить?

Я на самом деле создал Redmine/плагины/redmine_timebank/тест/функционал/timebank_helper_test.rb , содержащий это:

require 'redmine' 
require 'versions_controller' 

class TimebankHelperTest < ActionController::TestCase 
    fixtures :projects, 
      :issues, 
      :issue_statuses, 
      :versions, 
      :trackers, 
      :projects_trackers, 
      :issue_categories, 
      :time_entries 

    def setup 
    @controller = VersionsController.new 
    @request = ActionController::TestRequest.new 
    @response = ActionController::TestResponse.new 
    User.current = User.where(:admin => true).first 
    @request.session[:user_id] = User.current.id 
    @project = Project.find(1) 
    end 

    def test_timebank_table 
    puts "AWWWWWWWWWWWWWWWWWWWW YEAHHHHHHHHHHHHHHHHHHHHH !" 
    end 

end 

Но когда я выполняю команду:

RAILS_ENV=test bin/rake redmine:plugins:test --trace 

я получаю эти ошибки:

** Execute redmine:plugins:test:functionals 
/usr/bin/ruby2.3 -I"lib:test" "/usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb" "plugins/*/test/functional/**/*_test.rb" 
/usr/share/redmine/lib/redmine/core_ext/active_record.rb:18:in `<top (required)>': uninitialized constant ActiveModel (NameError) 
    from /usr/share/redmine/lib/redmine/core_ext.rb:1:in `require' 
    from /usr/share/redmine/lib/redmine/core_ext.rb:1:in `block in <top (required)>' 
    from /usr/share/redmine/lib/redmine/core_ext.rb:1:in `each' 
    from /usr/share/redmine/lib/redmine/core_ext.rb:1:in `<top (required)>' 
    from /usr/share/redmine/lib/redmine.rb:18:in `require' 
    from /usr/share/redmine/lib/redmine.rb:18:in `<top (required)>' 
    from /usr/share/redmine/plugins/redmine_timebank/test/functional/timebank_helper_test.rb:1:in `require' 
    from /usr/share/redmine/plugins/redmine_timebank/test/functional/timebank_helper_test.rb:1:in `<top (required)>' 
    from /usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb:10:in `require' 
    from /usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb:10:in `block (2 levels) in <main>' 
    from /usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb:9:in `each' 
    from /usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb:9:in `block in <main>' 
    from /usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb:4:in `select' 
    from /usr/lib/ruby/vendor_ruby/rake/rake_test_loader.rb:4:in `<main>' 
rake aborted! 

Видение uninitialized constant ActiveModel (NameError) заставляю меня думать, что мне нужно больше зависимостей, но мне сложно, что мне просто нужно, чтобы redmine импортировал все остальное.

Другие плагины кажется импортировать некоторые вещи, как и в их тест/test_helper.rb:

require File.expand_path(File.dirname(__FILE__) + '/../../../test/test_helper') 

И эта линия в каждый файл тестирования:

require File.dirname(__FILE__) + '/../test_helper' 

тест Rake говорит, что ни один из них не импортируя файлы могут быть найдены. Такие как:

/usr/share/redmine/plugins/redmine_timebank/test/test_helper.rb:1:in `require': cannot load such file -- /usr/share/redmine/test/test_helper (LoadError) 

Какой материал мне нужно импортировать в мой функциональный тест, чтобы заставить его работать?

Это test/test_helper еще существует? Где я могу найти его ?

Спасибо вам большое и у вас отличный день!

+0

ли вы работать базовые тесты с успехом? RAILS_ENV = тест тестового пакета exec rake. Затем вы можете скопировать основные тесты, чтобы помочь вам написать свои собственные. – Nanego

ответ

2

Предполагаю, что у вас есть плагин под названием redmine_foo, который вы хотите протестировать.

То, что вы видели другие плагины сделать это правильно, включите Redmine-х test/test_helper делая

require File.expand_path(File.dirname(__FILE__) + '/../../../test/test_helper') 

в redmine_foo/test/test_helper.rb.

Если у вашей Redmine нет test/test_helper.rb, это верный признак того, что что-то не так или нет. Я не уверен, что текущие тесты против Redmine, расположенные в /usr/share, это хорошая идея, так что прежде всего, получите правильную проверку Redmine от github или официального SVN на redmine.org, добавьте свой плагин в каталог plugins (т. Е. в папке с именем plugins/redmine_foo) и работать с этим.

В тестовом случае требуется тестовый помощник вашего плагина (однострочный сверху), т. Е.в redmine_foo/test/functional/foos_controller_test.rb сделать:

require File.expand_path('../../test_helper', __FILE__) 

class FoosControllerTest < ActionController::TestCase 
    setup do 
    # setup stuff specific to your application/test case 
    end 

    test 'should show hello world' do 
    get :show 
    assert_response :success 
    assert_match /hello world/, response.body 
    end 
end 

Там нет необходимости инициализировать какие-либо из @controller, @request, @response переменных экземпляра, если ваш тест наследует от ActionController::TestCase.

Чтобы получить самый простой плагин Redmine возможно, с выше тест работает успешно, все, что вам нужно сделать, это создать контроллер, добавить маршрут и основные init.rb:

redmine_foo/app/controllers/foos_controller:

class FoosController < ApplicationController 
    def show 
    render text: 'hello world' 
    end 
end 

redmine_foo/init.rb:

Redmine::Plugin.register :redmine_foo do 
    name 'Redmine Foo' 
    version '1.0.0' 
end 

redmine_foo/config/routes.rb:

resource :foo 

Запустите тесты из Redmine базового каталога с помощью NAME=redmine_foo bin/rake redmine:plugins:test

+0

Боже, черт возьми, 1000% спасибо, ты спас мою карьеру: ') (Тест был моим предложением, но я сказал, что это будет сделано, поэтому это должно быть сделано) – dctremblay

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