0

我在 RubyMine 中有一些 rspec 测试,当我从 RubyMine 界面运行它们时,它们运行良好。但是当我尝试从终端运行相同的测试时,它们失败了。我使用 ruby​​-gmail gem 使用这种结构发送邮件槽 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'

我能做些什么?

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 回答