rspec 测试的问题,未定义的方法“post" [英] problem with rspec test, undefined method 'post'

查看:11
本文介绍了rspec 测试的问题,未定义的方法“post"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am writing a spec to test the behavior of the mashup_controller when someone sends a query through a URL. I need to simulate the parameters contained in the URL, and i read that the post() method will do that, however when i get an error:

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

这是我的代码:

require 'spec_helper'
require 'mashup_controller.rb'

describe MashupController do
    it "simulates query" do
        post :create    
    end
end

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

Sorry if I'm not making any sense. I am very new to rails and rspec. Any help would be appreciated. Thanks.

推荐答案

如果 spec 文件不在 spec/controllers 下,像 getpost 这样的方法 不会被 rspec-rails 自动提供.

If the spec file is not under spec/controllers, methods like get and post will not be automatically made available by rspec-rails.

您要么需要标记您的规范:

You either need to tag your spec:

describe MyController, type: :controller do
  # ...
end

或包含模块:

describe MyController do
  include RSpec::Rails::ControllerExampleGroup
  # ...
end

查看rspec-rails中的相关代码.

这篇关于rspec 测试的问题,未定义的方法“post"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆