gpt4 book ai didi

ruby-on-rails - Rspec 的未定义方法 'post'

转载 作者:行者123 更新时间:2023-12-02 21:24:18 25 4
gpt4 key购买 nike

我正在学习教科书《工程软件即服务》中有关 Cucumber 和 Rspec for RoR 的教程,以及 edX.org 上的存档类(class)。我在尝试使用 Rspec 时遇到了问题。索引 View 有一个发布到 Controller 方法的表单,唯一的字段名称为:search_terms。在movies_controller.rb中有这个方法:

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>

据我了解,“post”是 Rspec 应该在“it” block 内提供的一种方法,用于模拟表单的发布。我已经搜索过,但没有找到任何要点。我发现的一项建议建议用户更正模型类继承,但我还没有模型,并且我已经看到此代码可以工作,或者至少在截屏视频上提供有用的错误消息,而无需实现模型。任何帮助将非常感激。

已编辑

这是我的“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"

结束

最佳答案

在最新版本的 RSpec Rails 中,有两个文件可用于运行规范

spec_helper.rbrails_helper.rb

您可能需要使用 require 'rails_helper' 来使 post 方法可用。

希望这有帮助

关于ruby-on-rails - Rspec 的未定义方法 'post',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com