我在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'
我该怎么办?
答案 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!
它适用于我。