在继续学习教程之前,我花了几个小时试图弄清楚这个小小的难题,这样它就不会在我以后的时候爆炸。正因为如此,我知道像这样的测试失败的问题是一毛钱,所以我道歉。在教程的“7.1.3 测试用户显示页面(带有工厂)”部分(下面提供的链接),我无法通过注册页面测试。这看起来很琐碎,但我在任何看似无穷无尽的可能存在问题的文件中都找不到任何问题(控制器、路由、测试本身、用户模型等)。网上似乎也没有人遇到过这个问题,所以我认为它必须是一些随机设置或我的 rails 项目中的某些东西。
无论如何,这是我认为相关的代码:
在 sublime 中运行 user_pages_spec 测试的错误:
Failures:
1) User pages signup page
Failure/Error: it { should have_content('Sign up') }
expected #has_content?("Sign up") to return true, got false
# ./spec/requests/user_pages_spec.rb:18:in `block (3 levels) in <top (required)>'
2) User pages signup page
Failure/Error: it { should have_title(full_title('Sign up')) }
expected #has_title?("Ruby on Rails Tutorial Sample App | Sign up") to return true, got false
# ./spec/requests/user_pages_spec.rb:19:in `block (3 levels) in <top (required)>'
Finished in 0.16194 seconds
4 examples, 2 failures
Failed examples:
rspec ./spec/requests/user_pages_spec.rb:18 # User pages signup page
rspec ./spec/requests/user_pages_spec.rb:19 # User pages signup page
Randomized with seed 46255
[Finished in 2.7s with exit code 1]
规范/请求/user_pages_spec.rb
require 'spec_helper'
describe "User pages" do
subject { page }
describe "profile page" do
let(:user) { FactoryGirl.create(:user) }
before { visit user_path(user) }
it { should have_content(user.name) }
it { should have_title(user.name) }
end
describe "signup page" do
before { visit signup_path }
it { should have_content('Sign up') }
it { should have_title(full_title('Sign up')) }
end
end
应用程序/视图/用户/new.html.erb
<% provide(:title, 'Sign Up') %>
<h1>Sign Up</h1>
<p>Find me in app/views/users/new.html.erb</p>
应用程序/控制器/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
end
end
配置/路由.rb
SampleApp::Application.routes.draw do
resources :users
root to: 'static_pages#home'
match '/signup', to: 'users#new', via: 'get'
match '/help', to: 'static_pages#help', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
end
如果您能想到您可能需要查看的任何其他代码,请告诉我。我包括 new.html.erb 因为我认为注册测试正在查看该页面,但我一定是错的。如果有人能让我知道我做错了什么导致这次失败,我将永远感激不尽。
如果你能说服我整个测试驱动的开发概念并不是一个完全的痛苦,那么你可以在此之上获得一些额外的布朗尼点。我发现本教程非常有趣,但是每当我进入测试部分时,我都会失去继续继续的动力,尤其是当它不起作用时。我知道从长远来看,这对您的代码更好,但是对于刚刚开始,我开始认为我应该忽略它,冒着退出的风险。
http://ruby.railstutorial.org/book/ruby-on-rails-tutorial?version=4.0#code-name_title_and_heading