【问题标题】:Rspec email_spec issueRspec email_spec 问题
【发布时间】:2015-03-21 13:59:22
【问题描述】:

我正在学习这个用户认证教程..

http://larsgebhardt.de/user-authentication-with-ruby-on-rails-rspec-and-capybara/

..它使用 gem 'email_spec'。假设作者使用的是早期版本的 rails 和 rspec,我在让 gem 正常工作时遇到问题。

添加时..

spec_helper.rb

RSpec.configure do |config|
...
config.include(EmailSpec::Helpers)
config.include(EmailSpec::Matchers)
...
end

我收到错误..

Neither Pony nor ActionMailer appear to be loaded so email-spec is requiring ActionMailer.
WARN: Unresolved specs during Gem::Specification.reset:
      minitest (~> 5.1)
      rack-test (~> 0.6.2)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.

我仍然可以看到预期的测试失败,所以我继续,但是一旦我到了它让我将 config.include(UserHelper) 添加到 spec_helper 的部分,gem 或测试套件就坏了。

rails 和 rspec 的这一边有点超出我的想象。非常感谢任何帮助。

我目前正在运行 Rails 4.1.6 和 Rspec 3.1.7。

【问题讨论】:

  • 如果在运行规范的命令前添加 bundle exec 会发生什么?
  • @Drenmi - 我很遗憾在没有警告通知的情况下收到完全相同的错误。
  • 我无法重现该问题。您有可以共享您的应用程序的存储库吗?
  • @Drenmi - 是的:github.com/shroy/mixblog 感谢您抽出宝贵时间提供帮助。我在 spec_helper.rb 中禁用了 config.include(UserHelper) 行,所以您会看到第一个错误。
  • 我解决了这些问题并在下面列出了答案。我还向您的 GitHub 存储库打开了一个拉取请求,其中包含代码修复。

标签: ruby-on-rails rspec gem capybara rspec3


【解决方案1】:

这里有两个问题需要解决。

首先是来自email_spec gem 的通知。要摆脱这种情况,只需在您的rails_helper.rb 中的email_spec 之前要求action_mailer

require "action_mailer"
require "email_spec"

实际上email_spec gem 会为你做这件事(因此通知),但如果你想摆脱讨厌的消息,这就是解决方案。

其次是config.include(UserHelper)的问题。这实际上与第一个问题无关,这是因为当您尝试引用 UserHelper 模块时未包含 support/user_helper.rb 文件。

发生这种情况的原因是因为您所关注的文章是在 RSpec 3 之前编写的,因此在 Rails 配置移动到 rspec_helper.rb 文件之前。 (这里有更多关于升级的信息:https://www.relishapp.com/rspec/rspec-rails/docs/upgrade

解决问题:

  1. rails_helper.rb取消注释此行:

    Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

    这将从spec/support 目录树加载您的所有文件。

  2. 将所有配置从 spec_helper.rb 移动到 rails_helper.rb

【讨论】:

  • 现在效果很好。感谢您深入研究这个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多