A.D*_*.D. 3 ruby ruby-on-rails-3
在Rubyonrails教程中尝试运行Rspec测试时,我一直收到此错误
失败:
1)GET'about'应该成功
Failure/Error: get 'about'
RuntimeError:
@controller is nil: make sure you set it in your test's setup method.
# ./spec/controllers/pages_controller_spec.rb:27:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
我已经尽力纠正了所有问题,但是都被证明是徒劳的。任何帮助将不胜感激。
这是我的spec_helper.rb文件
require 'rubygems'
require 'spork'
Spork.prefork do
end
Spork.each_run do
end
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.include RSpec::Rails::ControllerExampleGroup
config.mock_with :rspec
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
end
Run Code Online (Sandbox Code Playgroud)
pages_controller.rb文件:
class PagesController < ApplicationController
def home
end
def contact
end
def about
end
end
Run Code Online (Sandbox Code Playgroud)
pages_controller_spec.rb文件:
require 'spec_helper'
describe PagesController do
render_views
describe "GET 'home'" do
render_views
it "should be successful" do
get 'home'
response.should be_success
end
end
describe "GET 'contact'" do
render_views
it "should be successful" do
get 'contact'
response.should be_success
end
end
end
describe "GET 'about'" do
render_views
it "should be successful" do
get 'about'
response.should be_success
end
end
Run Code Online (Sandbox Code Playgroud)
route.rb文件:
SampleApp::Application.routes.draw do
get "pages/home"
get "pages/contact"
get "pages/about"
end
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我没有问题运行Spork和自动测试。
问题在于测试中的嵌套:该describe PagesController
块仅包装前两个测试,而不包装最后一个。
它看起来应该像这样:
describe PagesController do
render_views
describe "GET 'home'" do
it "should be successful" do
get 'home'
response.should be_success
end
end
describe "GET 'contact'" do
it "should be successful" do
get 'contact'
response.should be_success
end
end
describe "GET 'about'" do
it "should be successful" do
get 'about'
response.should be_success
end
end
end
Run Code Online (Sandbox Code Playgroud)
请参阅:我如何摆脱@controller是我的测试中的nil错误
ps我已经取出了render_views
顶层describe
块中的所有块以外的所有块-您只需要为该块调用一次(请参阅规范)。
归档时间: |
|
查看次数: |
3594 次 |
最近记录: |