我正在通過教程上的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