2011-07-04 11 views
1

私はgithubで宝石をリリースしました。私はアルバ宝石との統合テストを書いています。しかし、コマンドラインとは異なる動作をするため、機能を実行できません。キュウリとアルバで発電機をテスト

レールが私のジェネレータを見つけることができない機能を実行した場合、コマンドラインで同じ手順を繰り返すと完全に動作します。

これは失敗機能

Background: A new rails application has been created with my gem 
    Given a rails application named "my_app" exists 
    And this gem is installed in that application 

@announce 
Scenario: Installation using default values 
    When I successfully run `rails generate google_authentication:install` 
    # this is needed because rails g returns 0 when can't find the generator 
    And the output should not contain "Could not find generator" 

であり、これは背景が、私はデバッグしようとしたと私はbundle installbundle checkコマンドを変更し、私ならばことがわかっ

Given /^a rails application named "([^\"]*)" exists$/ do |app_name| 
    @app_name = app_name 
    Given "I successfully run `rm -rf #{app_name}`" # added to ensure that the working directory is clean 
    And "a directory named \"#{app_name}\" should not exist" 
    And "I successfully run `rails new #{app_name}`" 
    And "I cd to \"#{app_name}\"" 
end 

When /^this gem is installed in that application$/ do 
    gempath = File.expand_path('../../../', __FILE__) 
    Given "I append to \"Gemfile\" with \"gem 'gem-name', :path => '#{gempath}'\"" 
    And "I successfully run `bundle check`" 
end 

ステップ実装するコードです出力をキャプチャ、私の宝石はバンドルに記載されていません。その結果、もし私がrails g --helpステップを書いたら、私の発電機はそこにはありません。しかし、宝石や発電機を開発することがあります(私の宝石の中には義務がありますので、バンブラー/レールはアルバの階段の中にすべてロードされていないようです)

私はこれがArubaまたはBundlerのバグだと思います。 an issue for arubaまだありません答え。

完全なコードはGithub

私はすでに見てthis solutionを試した最後のものではなく、運

+0

何らかの理由で#{app_name}が空白の文字列になったときにテストが失敗するのは嫌です。 – corroded

+0

同様の問題があります。私はレール3.1>をサポートする古い宝石を維持しています。問題は、バンドルインストールコマンドが失敗したことです。 Gemfile.lockをチェックすると、出力にインストールされていることが示されていますが、存在しません!私はアルバの宝石を使用していないので、それはまたアルバの問題ではありません。 – kgpdeveloper

+0

私はそれを間違ったやり方でやっていることに気付きました。私がテストをどのように書いているかを調べてください:https://github.com/bridgeutopia/textile_editor_helper。ありがとう。 – kgpdeveloper

答えて

2

代わりのビットが廃止され、あなたが書いたものをすべてのステップでありますキュウリ。

はこのような何かを試してみてください:

Given /^a rails application named "([^\"]*)" exists$/ do |app_name| 
    FileUtils.mkdir_p("tmp") 
    system("rm -rf tmp/#{app_name}") 
    system("rails new tmp/#{app_name}") 
    system("ln -s ../../../lib/generators tmp/#{app_name}/lib") 
    @current_directory = File.expand_path("tmp/#{app_name}") 
end 

あなたは、ディレクトリへのリンクを作成する必要があります。これは、キュウリを使用してテストするべきではないバンドルインストールよりも理にかなっています。

+0

私はあなたに試してみるつもりです – Fabio

関連する問題