2016-11-25 66 views
0

我想测试显示在页面上的值,显示的数值是代码:测试视图元素

<% @user ||= current_user %> 
<div class="stats"> 
    <a href="<%= following_user_path(@user) %>"> 
    <strong id="following" class="stat"> 
     **<%= @user.following.count %>** 
    </strong> 
    following 
    </a> 
    <a href="<%= followers_user_path(@user) %>"> 
    <strong id="followers" class="stat"> 
     <%= @user.followers.count %> 
    </strong> 
    followers 
    </a> 
</div> 

我想使用assert_equals这样: assert_equals user.followers。计数,(显示下列值)

但我不确定如何引用页面上显示的值。我需要将值赋给一个ID吗?如果是这样的话,我如何在测试中正确引用它?

我希望我已经提供了足够的信息。

Regards,

Ryan。

+0

我不确定它是否从我的帖子中可以清楚,但我想要测试的特定片段位于asterix(@ user.following.count) –

+0

之间。发布测试代码也很有帮助。您也可以查看本节http://guides.rubyonrails.org/testing.html#testing-views –

+0

您是否在测试中使用了灯具? –

回答

1

可设两个scenerios(和你应该做两者):

  • 你想验证控制器计算的计数。
  • 你要测试的视图(HTML)

对于第1部分:检查你的控制器有,assigns() gives you controller objects/variables

assert_equals assigns(:user).following.count, 2 

对于第2部分:作为描述here,以测试你的看法使用assert_select。像:

assert_select 'div.stats a strong#following', assigns(:user).following.count 

你也应该更换受让人(:用户).following.count一些hardocded号码,让你随时确保一些其他的东西并没有改变以下计数。

+0

谢谢你,非常有帮助。 –