运行失败的Rspec,它从Gmail发送消息,在RubyMine中正常工作

时间:2012-11-29 07:44:05

标签: rspec terminal gmail rubymine

我在RubyMine中有一些rspec测试,当我从RubyMine界面运行它们时,它们非常完美。 但是当我尝试从终端运行相同的测试时,它们会失败。 我使用ruby-gmail gem使用这种结构发送邮件trougth gmail:

@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'

我该怎么办?

2 个答案:

答案 0 :(得分:0)

您不应该使用与RubyMine相同的行来在命令行上运行您的规范。 RubyMine所做的就是包含它自己的格式化程序,因此它可以在GUI中为您提供结果, 所以,如果你有这个工作,那么使用rspec spec/...

就有更多的价值

Rspec只应与rspec命令一起使用,您的测试将正确运行。

答案 1 :(得分:0)

发现问题。 我使用了Ruby-Gmail gem,但当我切换Gmail gem(Ruby-Gmail的fork)并将语法更改为

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!

它适用于我。