rspec测试的问题,未定义的方法’post’
当有人通过URL发送查询时,我正在编写一个规范来测试mashup_controller的行为。 我需要模拟URL中包含的参数,我读到post()方法会这样做,但是当我收到错误时:
1) MashupController simulates query Failure/Error: post :create NoMethodError: undefined method `post' for # # ./mashup_controller_rspec.rb:9:in `block (2 levels) in ' Finished in 0.20199 seconds 1 example, 1 failure Failed examples: rspec ./mashup_controller_rspec.rb:7 # MashupController simulates query
这是我的代码:
require 'spec_helper' require 'mashup_controller.rb' describe MashupController do it "simulates query" do post :create end end
对不起,如果我没有任何意义。 我对rails和rspec很新。 任何帮助,将不胜感激。 谢谢。
如果规范文件不在spec/controllers
,则rspec-rails
不会自动提供get
和post
等方法。
您需要标记您的规范:
describe MyController, type: :controller do # ... end
或包括模块:
describe MyController do include RSpec::Rails::ControllerExampleGroup # ... end
请参阅rspec-rails中的相关代码 。
- 确保你的Gemfile中有
gem spec-rails
- 你的
mashup_controller_rspec.rb
应该在spec/controllers
我使用gem rspec-rails而不是gem spec-rails。
在Rails 4中,您可以将RSpec测试的类型声明为:request
和spec文件可以在任何目录中。
example: in spec/routes/users.rb RSpec.describe 'UserRoutes', type: :request do ... end
我的解决方案是
describe MyController, type: :controller ... end