我有这条路线:
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
我得到了同样的错误
答案 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
一旦添加了我的规格就通过了。