测试 关于测试中错误信息加载的疑惑

jarorwar · 2013年08月21日 · 最后由 jarorwar 回复于 2013年08月21日 · 2152 次阅读
<%= form_for(@user) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

@user.errors怎么在测试中获取啊。

assigns(@user.errors) 这样报错啊

assigns(:user).errors

#1 楼 @Rei yes , did it ~

谢谢。。

同上,应该使用assigns(:user).errors

稍微解释一下,assigns的作用就是从 Controller 里根据名字,把对应的实例变量取回来。比如你这里需要取得的是@user这个实例变量,所以就传入:user取得对应实例变量。而你想得到对应@user上的errors就在拿到的实例变量上调用方法。

请参考 Rails API

http://api.rubyonrails.org/classes/ActionDispatch/TestProcess.html#method-i-assigns

也可以参考 Rails Guide 的 Testing 篇对 assigns 的示例

http://guides.rubyonrails.org/testing.html

#3 楼 @_kaichen very well, 授人一渔啊~!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号