0

RubyMineにいくつかのrspecテストがありますが、RubyMineインターフェイスから実行すると完全に機能します。しかし、ターミナルから同じテストを実行しようとすると、失敗します。私はruby-gmailgemを使用して、この構造を使用してメールtrougthgmailを送信します。

@gmail.deliver do
        to current_unread_mail.reply_to
        subject "Re: " + current_unread_mail.title
        body reply_body
end

RubyMineから実行するとメールは正常に送信されますが、このようにrspecを実行すると、メールは送信されませんでした(ただし、例外は発生しません)。

rspec test_spec.rb

したがって、この理由は、RubyMineが実行時にいくつかの追加のrspecパラメーターを追加するためだと思います。

RubyMineのRspec出力の最初の行は次のようになります。

/home/user/.rvm/rubies/ruby-1.9.2-p318/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /home/user/.rvm/gems/ruby-1.9.2-p318@global/bin/rspec /home/user/path_to_spec/test_spec.rb --require teamcity/spec/runner/formatter/teamcity/formatter --format Spec::Runner::Formatter::TeamcityFormatter

しかし、ターミナルからこのコードを実行すると、エラーが発生しました

bash: syntax error near unexpected token `$0=ARGV.shift'

私に何ができる?

4

2 に答える 2

0

コマンドラインで仕様を実行するために、RubyMineと同じ行を実行しないでください。RubyMineが行うのは、独自のフォーマッターを含めることだけです。これにより、GUIで結果を得ることができます。したがって、これを機能させると、使用するだけではるかに多くの価値があります。rspec spec/...

Rspecはrspecコマンドだけで使用する必要があります。テストは正しく実行されます。

于 2012-12-03T12:13:42.910 に答える
0

問題が見つかりました。Ruby-Gmail gemを使用していましたが、 Gmail gem ( Ruby-Gmailのフォーク)に切り替えて構文を次のように変更すると、

email = @gmail.compose do
 to (current_unread_mail.reply_to.mailbox + '@' + current_unread_mail.reply_to.host).to_s
 subject "Re: " + current_unread_mail.title
 body reply_body
end
email.deliver!

それは私にとってはうまくいきます。

于 2012-12-04T11:00:32.420 に答える