Ruby on rails RoR教程第9章测试失败
我一直在阅读MHartl的教程,在第9章我有5个持续性错误,都与LayoutLinks有关。我检查了又检查,我看不出我的代码和他的代码有什么不同,但在我的计算机上运行他的代码通过了所有测试 我在下面粘贴了一个错误示例,突出显示它似乎在显示根页面(通过“访问根路径”),即使在经过“工厂(:用户)->填写信息->单击按钮”说明集后,也没有登录。所以在那里的某个地方,我想我要么只是失去了登录状态,要么根本没有注册 有什么见解吗?非常感谢。这相当令人困惑 这是一个错误示例:Ruby on rails RoR教程第9章测试失败,ruby-on-rails,Ruby On Rails,我一直在阅读MHartl的教程,在第9章我有5个持续性错误,都与LayoutLinks有关。我检查了又检查,我看不出我的代码和他的代码有什么不同,但在我的计算机上运行他的代码通过了所有测试 我在下面粘贴了一个错误示例,突出显示它似乎在显示根页面(通过“访问根路径”),即使在经过“工厂(:用户)->填写信息->单击按钮”说明集后,也没有登录。所以在那里的某个地方,我想我要么只是失去了登录状态,要么根本没有注册 有什么见解吗?非常感谢。这相当令人困惑 这是一个错误示例: LayoutLinks wh
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>
...
LayoutLinks登录时应具有注销链接
失败/错误:response.should_选择器(“a”),:href=>signout_路径,
预期以下输出包含标记:
...
...
这不简单吗?您在那里有“登录”,但没有“注销路径:”),意思是,也许您应该添加
<li><a href="/signout">Sign Out</a></li>
在你看来。这不简单吗?您在那里有“登录”,但没有“注销路径:”),这意味着,也许您应该添加
<li><a href="/signout">Sign Out</a></li>
您的看法。测试似乎没有正确登录用户。您可以将代码与进行比较,看看这是否有助于解决问题。测试似乎没有正确地为用户登录。您可以将代码与进行比较,看看这是否有助于解决问题。我也看到了同样的问题,我已经输入了日志来检查发生了什么。在SessionHelper>>登录中,我可以看到@current\u用户设置正确。稍后,当我们显示用户页面时,它会调用SessionHelper>>signed\u in?但是现在@current_user是nil,所以我没有显示“注销”和“配置文件”链接,其中两个测试失败
似乎正在发生的是,当我们登录时,我们在SessionController实例中进行登录,该实例调用包含模块中的sign_-in方法,该方法反过来在SessionController实例中设置@current_用户。然后它重定向到user,user将控制权传递给UsersController,而_header.html.erb中的代码调用signed_in?在UsersController的上下文中执行。但是,此控制器有自己的@current_用户变量副本,在SessionController中运行sign_不会影响该变量,因此它返回nil。我看到了同样的问题,我已输入日志以检查发生了什么。在SessionHelper>>登录中,我可以看到@current\u用户设置正确。稍后,当我们显示用户页面时,它会调用SessionHelper>>signed\u in?但是现在@current_user是nil,所以我没有显示“注销”和“配置文件”链接,其中两个测试失败
似乎正在发生的是,当我们登录时,我们在SessionController实例中进行登录,该实例调用包含模块中的sign_-in方法,该方法反过来在SessionController实例中设置@current_用户。然后它重定向到user,user将控制权传递给UsersController,而_header.html.erb中的代码调用signed_in?在UsersController的上下文中执行。但是,此控制器有自己的@current\u用户变量副本,在SessionController中运行sign\u不会影响该变量,因此它返回nil。我也遇到了同样的问题,并且意识到工厂(: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
我也遇到了同样的问题,并且意识到工厂(: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
在我的箱子里找到的,也许值得你检查一下。我从未真正正确登录,因为在User.rb self.authenticate_with_salt中,我的第一行是
user = find_by_id(:id)
而不是
user = find_by_id(id)
有了这些,我通过了测试,我得到了注销等链接。在我的案例中找到了它,可能值得你检查一下。我从未真正正确登录,因为在User.rb self.authenticate_with_salt中,我的第一行是
user = find_by_id(:id)
而不是
user = find_by_id(id)
有了这些,我通过了考试,我得到了注销等链接。同样的事情发生在我身上,就像发生在Alun ap Rhisiart身上一样
我的问题是这个街区的第二条线
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
logger.debug "sign_in(user) - #{self.current_user}"
end
…我不小心放了[user.id],[user.salt]同样的事情发生在我身上,就像发生在Alun ap Rhisiart身上一样
我的问题是这个街区的第二条线
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
logger.debug "sign_in(user) - #{self.current_user}"
end
…我不小心把[user.id],[user.salt]放到了教程的第9章,我遇到了同样的问题。原因原来是我自己在输入代码时的错误
我发现(通过操纵_header.html.erb)在app/helpers/session\u helper.rb
中定义的signed\u-in?
方法工作不正确,这都是由于额外的@
我有这个(使用实例变量):
但是应该使用当前用户的方法来代替:
def signed_in?
! current_user.nil?
end
在完成教程的第9章时,我遇到了同样的问题。原因原来是我自己在输入代码时的错误
我发现(通过操纵_header.html.erb)在app/helpers/session\u helper.rb
中定义的signed\u-in?
方法工作不正确,这都是由于额外的@
我有这个(使用实例变量):
但是应该使用当前用户的方法来代替:
def signed_in?
! current_user.nil?
end
用户的问题没有足够的信息让您知道这一点,但测试的重点是:(1)让用户登录,然后(2)检查“注销”链接是否存在