我正在通过教程上的Cucumber和Rspec for RoR教科书工程软件即服务,以及通过edX.org上的存档课程。我遇到了一个试图与Rspec合作的问题。索引视图有一个表单发布到控制器方法,唯一的字段名称为:search_terms。在movies_controller.rb有这个方法:未定义的Rspec方法'post'
class MoviesController < ApplicationController
...
def search_tmdb
@movies = Movie.find_in_tmdb(params[:search_terms])
flash[:notice] = "Movie '#{params[:search_terms]}' not found."
redirect_to movies_path
end
end
在movies_controller_spec.rb如下:
require 'spec_helper'
describe MoviesController do
describe 'searching TMDb' do
it 'should call the model method that performs TMDb search' do
post :search_tmdb, {:search_terms => 'hardware'}
end
...
end
end
Rspec的给了我以下错误:
NoMethodError:
undefined method `post' for <RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xb36c92c>
这是我的理解是,“后'是Rspec应该在'it'块内部提供的一种方法,来模拟表单的发布。我已经搜索,但没有发现任何问题。我发现的一个建议表明,用户正确的模型类继承,但我没有模型,并且我已经看到这个代码工作,或至少提供了一个有用的错误消息,在屏幕截图上,没有实现模型。任何帮助将非常感激。
EDITED
这里是我的 'spec_helper' 文件
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
末
什么是你的规范助手? – 2014-08-29 09:43:46
请问您可以在spec/spec_helper.rb文件中发布代码吗? – Surya 2014-08-29 09:45:27