RSpec的未定义方法帖子

时间:2015-01-16 17:42:46

标签: ruby-on-rails ruby rspec ruby-on-rails-4.1

我有这条路线:

post 'create', to: 'applications#create'

这个控制器:

class ApplicationsController < ApplicationController
  def create
  end
end

和这个测试:

require "spec_helper"

describe ApplicationsController do
  describe "routing" do
    it 'routes to #create' do
      post('/applications').should route_to('applications#create')
    end
  end
end

这是我的spec_helper

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'

ActiveRecord::Migration.maintain_test_schema!

RSpec.configure do |config|

  config.expect_with :rspec do |c|
    c.syntax = :should
  end
  config.mock_with :rspec do |c|
    c.syntax = :should
  end
  config.use_transactional_fixtures = true
  config.infer_base_class_for_anonymous_controllers = false
  config.order = "random"
end

为什么我跑

rspec ./spec/routing

我收到此错误?

  

失败/错误:post('/ applications')。应该route_to('applications#create')        NoMethodError:          RSpec的未定义方法`post'

我尝试使用expect更改测试,但没有运气。没有不同的班级名称。

我应该怎么做才能测试我的路线?

更新

如果我这样做:

it "should return status 200" do
  post('/applications'), {}
  response.status.should be(200)
end

我得到了同样的错误

1 个答案:

答案 0 :(得分:1)

我不确定它可以帮到你,但是在传递给Rspec 3

时遇到了同样的问题

根据https://relishapp.com/rspec/rspec-rails/docs/directory-structure

我们应该启用该选项以自动传递元数据。

​# spec/rails_helper.rb
RSpec.configure do |config|
  config.infer_spec_type_from_file_location!
end

一旦添加了我的规格就通过了。