我一直在看MHartl的教程,我在第9章有5个持久性错误,所有这些都与LayoutLinks有关。我已经检查了一遍又一遍,我看不出我的代码与他的代码有什么不同,但在我的计算机上运行他的代码通过了所有的测试。
我已经在下面粘贴了一个错误的例子,强调它似乎显示了根页面(通过“访问root_path"),即使在通过"factory(:user) -> fill_in info -> click_button”指令集之后也没有被登录。因此,我认为我要么失去了logged_in状态,要么根本就没有注册。
有什么见解吗?非常感谢。这非常令人困惑。
以下是错误的一个示例:
LayoutLinks when signed in should have a signout link
Failure/Error: response.should have_selector("a", :href => signout_path,
expected following output to contain a <a href='/signout'>Sign Out</a> tag:
<!DOCTYPE html>
<html>
<head>
...
...
<li><a href="/">Home</a></li>
<li><a href="/help">Help</a></li>
<li><a href="/signin">Sign in</a></li>
</ul></nav></header><!--
<header>
<nav class="round">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/help">Help</a></li>
<li><a href="/signin">Sign In</a></li>
</ul>
</nav>
...发布于 2011-05-02 02:03:23
我遇到了同样的问题,并意识到Factory(: user )调用没有将用户持久化到数据库中,我最终使用了以下代码来使其工作:
@user = Factory(:user)
visit signup_path
fill_in :email, :with => @user.email
fill_in :name, :with => @user.name
fill_in :password, :with => @user.password
fill_in "Confirmation", :with => @user.password_confirmation
click_button
visit signin_path
fill_in :email, :with => @user.email
fill_in :password, :with => @user.password
click_button请注意,您还必须添加以下内容,以便在测试运行后清除数据库
after(:each) do
User.find_by_email(@user.email).destroy
end发布于 2011-04-05 04:39:09
这不是很简单吗?你在那里有"Sign In“,但没有signout path :)意思,也许你应该添加
<li><a href="/signout">Sign Out</a></li>到你的视线。
发布于 2011-04-12 06:35:58
看起来测试没有让用户正确登录。您可以将您的代码与completed sample app进行比较,看看这是否有助于解决问题。
https://stackoverflow.com/questions/5543969
复制相似问题