rspec测试问题,未定义方法'post'

use*_*403 23 ruby tdd bdd rspec ruby-on-rails

当有人通过URL发送查询时,我正在编写一个规范来测试mashup_controller的行为.我需要模拟URL中包含的参数,并且我读到post()方法会这样做,但是当我收到错误时:

1) MashupController simulates query
     Failure/Error: post :create
     NoMethodError:
       undefined method `post' for
#<RSpec::Core::ExampleGroup::Nested_1:0x980bc50>
     # ./mashup_controller_rspec.rb:9:in `block (2 levels) in <top (required)>'

Finished in 0.20199 seconds 1 example, 1 failure

Failed examples:

rspec ./mashup_controller_rspec.rb:7 # MashupController simulates query
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

require 'spec_helper'
require 'mashup_controller.rb'

describe MashupController do
    it "simulates query" do
        post :create    
    end
end
Run Code Online (Sandbox Code Playgroud)

对不起,如果我没有任何意义.我对rails和rspec很新.任何帮助,将不胜感激.谢谢.

Lev*_*tix 34

如果spec文件不在spec/controllers,则类似getpost不会自动提供方法rspec-rails.

您需要标记您的规范:

describe MyController, type: :controller do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

或包括模块:

describe MyController do
  include RSpec::Rails::ControllerExampleGroup
  # ...
end
Run Code Online (Sandbox Code Playgroud)

请参阅rspec-rails中的相关代码.


Uko*_*Uko 3

  1. 确保你gem spec-rails的 Gemfile 中有
  2. 你的mashup_controller_rspec.rb应该在spec/controllers