2017-02-01 5 views
1

Redmine 3プラグインはほとんど作成されていません。できるだけ安定性を高めるためにテストをコード化したいと思います。Redmine 3プラグインの機能テストの作成方法

しかし、私は動作するものを作成することはできません。他のプラグインのテストを見ようとしましたが、可能な限り動作するものを再現することはできません。

あなたは私に、どのように進むかの簡単なキャンバスの例を教えていただけますか?

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 

しかし、私はコマンドを実行すると::

私は実際にこれを含むRedmineの/プラグイン/ redmine_timebank /テスト/機能/ timebank_helper_test.rb を作成

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! 

見て私はもっ​​と欲求不満を必要としていると思うが、残りのものをすべてインポートするためにレッドマインを要求するだけでいいということは難しい。

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

レーキ試験は、これらのいずれもインポートしないことを言う:

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

そして、それぞれのテストファイルに次の行:

他のプラグインには、そのテスト/ test_helper.rbでのようにいくつかのことをインポートしているようですファイルが見つかりました。そのような:

/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

を使ってRedmineのベースディレクトリから、あなたのテストを実行し、あなたが成功を収めてコアテストを実行しましたか? RAILS_ENV =テストバンドルexec rake test。次にコアテストをコピーして独自のテストを作成できます。 – Nanego

答えて

2

テストしたいredmine_fooというプラグインがあるとします。あなたが見てきたどのような他のプラグインが正しいことを行う

は、Redmineののtest/test_helperredmine_foo/test/test_helper.rb

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

を実行してあります。

Redmineにtest/test_helper.rbがない場合、これは間違っている/間違っていることを示す記号です。私は/usr/shareにあるRedmineに対してテストを実行しているかどうかはわからないので、まず、Redmineの適切なチェックアウトをgithubまたはredmine.orgの公式SVNからpluginsディレクトリに追加してください。 plugins/redmine_fooという名前のフォルダにあります)。

テストケースでは、プラグインのテストヘルパー(上から1行)、つまり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、テストケースがActionController::TestCaseから継承@responseインスタンス変数ます。

上記のテストが正常に実行されていると、可能な限り最も簡単な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 

NAME=redmine_foo bin/rake redmine:plugins:test

+0

神様、1000%あなたに感謝、あなたは私のキャリアを保存しました: ') (テストは私の提案でしたが、それは完了すると言われました。 – dctremblay

関連する問題