在rails 4.2中使用RSpec 3.2进行测试时,路由不可用

时间:2015-10-22 11:56:57

标签: ruby-on-rails ruby testing rspec

我有这两个文件,我想在Rails 4.2中测试它(使用RSpec 3.2) 但是在跑步时我得到了例外。

有没有人有想法解决这个问题?

new.html.erb_spec.rb:

require 'rails_helper'

RSpec.describe "products/new", type: :view do
  before(:each) do
    assign(:product, Product.new())
  end

  it "renders new product form" do
    render

    # assert_select "form[action=?][method=?]", products_path, "post" do
    # end
  end
end

new.html.erb:

<h1>New Product</h1>


<%= link_to 'Back', products_path %>

例外:

  1) products/new renders new product form
     Failure/Error: render
     ActionView::Template::Error:
       undefined local variable or method `products_path' for #<#<Class:0x007fc7da6d6240>:0x007fc7da6cf3a0>
     # ./app/views/products/new.html.erb:4:in `_app_views_products_new_html_erb__2726879035604323536_70248169634620'
     # /Users/endem/.rvm/gems/ruby-2.2.1/gems/actionview-4.2.4/lib/action_view/template.rb:145:in `block in render'
     # /Users/endem/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `block in instrument'
     # /Users/endem/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
     # /Users/endem/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `instrument'

关于另一个问题:使用该解决方案并没有帮助。如果使用建议的

spree.products_path

网站中断。 AND:测试没有运行......

奇怪的是,这些测试是由发生器自动生成的(!)并且无法正常工作。

2 个答案:

答案 0 :(得分:0)

你有吗

RSpec.configure do |config|
  config.include Rails.application.routes.url_helpers
  ...
end

包含在您的rails_helper中?

Similar question was posted here.

答案 1 :(得分:0)

我找到了解决方案......它与进口没有任何关系。

在我的Gemfile中,我有以下行,我在互联网上找到了某个地方:

gem 'rspec-rails', '~> 3.0', require: 'rspec/rails'

我把它修好了

gem 'rspec-rails', '~> 3.3'

之后使用rails 4.2.4和rspec 3.3在我的rails应用程序上消除了所有关于丢失路径等的错误

感谢您的帮助!!!