2012-02-21 93 views
1

我目前在RailsTutorial 3.2,Section 9.3.1 User Index中。RailsTutorial 3.2第9章 - “before {valid_signin(user)}”导致RSpec测试失败

清单9.27引导编辑到spec/requests/authentication_pages_spec.rb代码如下:

require 'spec_helper' 

describe "Authentication" do 
    . 
    . 
    . 
    describe "with valid information" do 
     let(:user) { FactoryGirl.create(:user) } 
     before { valid_signin(user) } 

     it { should have_selector('title', text: user.name) } 

     it { should have_link('Users', href: users_path) } 
     it { should have_link('Profile', href: user_path(user)) } 
     it { should have_link('Settings', href: edit_user_path(user)) } 
     it { should have_link('Sign out', href: signout_path) } 

     it { should_not have_link('Sign in', href: signin_path) } 
     . 
     . 
     . 
    end 
    end 
end 

这样做后,测试的相应部分失败。我非常忠实地遵循了教程,所以我的代码和设置完全相同。

测试的几件事情出来后,我发现改变

before { valid_signin(user) } 

行改为

before { sign_in user } 

,而不是将所有的测试再次通过。是否有关于句法上关闭的行,还是这指向我的代码中的其他地方的错误?

(该应用程序的工作原理完全一样它应该,它只是说,它不测试)。

+0

你从rspec得到什么错误?你的'sign_in(user)'和'valid_signin(user)'方法是什么样的? – James 2012-02-21 18:39:53

+0

RSpec错误表示没有'valid_signin(user)'的方法,这是真的 - 据我所知,这在教程中从未定义过。我有点困惑,但认为它可能是内置的......那么肯定是遗漏了? – ellawren 2012-02-21 22:07:09

回答

2

如果你看一下上市8.34,你会看到valid_signin的Def在规格/支持/公用事业.rb文件。

+0

它就在那里!该教程说8.3节(黄瓜测试)是可选的,所以我跳过它 - 猜猜它毕竟不是可选的。对于遇到此问题的其他人,[这里是该部分的链接](http://ruby.railstutorial.org/chapters/sign-in-sign-out?version=3.2#sec:cucumber)。 – ellawren 2012-02-21 23:17:35

0

我发现许多“可选”工作对于随后的代码工作是必需的。供参考