Тест Rails pages_controller_spec.rb не должен провалиться, но есть ошибка? - PullRequest
0 голосов
/ 19 января 2012

Следовали Руководству по Rails Майкла Харта rails version 3.0 на Mac OS X 10.7

$ rspec spec /

......FF

Failures:

  1) PagesController GET 'help' should be successful
     Failure/Error: get 'help'
     ActionController::RoutingError:
       No route matches {:controller=>"pages", :action=>"help"}
     # ./spec/controllers/pages_controller_spec.rb:45:in `block (3 levels) in <top (required)>'

  2) PagesController GET 'help' should have the right title
     Failure/Error: get 'help'
     ActionController::RoutingError:
       No route matches {:controller=>"pages", :action=>"help"}
     # ./spec/controllers/pages_controller_spec.rb:49:in `block (3 levels) in <top (required)>'

Finished in 0.14686 seconds
8 examples, 2 failures

Failed examples:

rspec ./spec/controllers/pages_controller_spec.rb:44 # PagesController GET 'help' should be successful
rspec ./spec/controllers/pages_controller_spec.rb:48 # PagesController GET 'help' should have the right title

Тест выглядит следующим образом:

require 'spec_helper'

describe PagesController do
  render_views

  describe "GET 'home'" do
    it "should be successful" do
      get 'home'
      response.should be_success
    end

    it "should have the right title" do
      get 'home'
      response.should have_selector("title",
      :content => "Ruby on Rails Tutorial Sample App | Home")
    end
  end

  describe "GET 'contact'" do
    it "should be successful" do
      get 'contact'
      response.should be_success
    end
    it "should have the right title" do
      get 'contact'
      response.should have_selector("title",
      :content => "Ruby on Rails Tutorial Sample App | Contact")
    end
  end

  describe "GET 'about'" do
    it "should be successful" do
      get 'about'
      response.should be_success
    end
    it "should have the right title" do
      get 'about'
      response.should have_selector("title",
      :content => "Ruby on Rails Tutorial Sample App | About")
    end
  end

  describe "GET 'help'" do
    it "should be successful" do
      get 'help'
      response.should be_success
    end
    it "should have the right title" do
      get 'help'
      response.should have_selector("title",
      :content => "Ruby on Rails Tutorial Sample App | Help")
    end
  end
end

И у меня есть в pages_controller.rb

class PagesController < ApplicationController
  def home
    @title = "Home"
  end

  def contact
    @title = "Contact"
  end

  def about
    @title = "About"
  end

  def help
    @title = "Help"
  end

end

И в Routes.rb у меня есть

SampleApp::Application.routes.draw do
  get "pages/home"
  get "pages/contact"
  get "pages/about"
  get "pages/help"
end

И, конечно, я также создал страницу help.html.erb в приложении/ views / pages Странная вещь, когда я запускаю rails server и захожу на localhost: 3000 / pages / help Я получаю правильную страницу с правильным заголовком, которая выглядит так, как будто тест должен был пройти, но это не так,Кроме того, контакты, дома и о тестах проходят, но когда я только что добавил помощь, это не по неизвестной причине.Это действительно беспокоит меня, каково простое решение, которое я упустил из виду, что оно сводит меня с ума?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2012

Ваш код в порядке.Проблема в том, что ваш предыдущий код был кэширован.Выходя из терминала и открывая новое окно, вы эффективно очищаете свой кеш.Вы можете столкнуться с теми же проблемами, если не отключите кэширование в тестовой среде.Перейдите на config/environments/test.rb и измените config.cache_classes = true на config.cache_classes = false

2 голосов
/ 19 января 2012

Загрузил ваш код и запустил:

........
8 examples, 0 failures
Finished in 0.18184 seconds

Он запускает GET 'help', поэтому я думаю, что вы запускаете это в автотесте, и он не перезагружается.Возможно ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...