3

是否有标准或最佳实践方法来测试 Rails 中的操作是否返回正确的文本?例如,我有一个用于执行 ajax 验证的简单操作,它执行以下操作:

def get_object_id
  if params[:id].blank?
    return render(:text => -1, :layout => false)
  end

  my_object = MyObject.find_by_id(params[:id].strip)

  # If the object is valid return the object id
  if my_object and my_object.active?
    return render(:text => my_object.id, :layout => false)
  end

  # Otherwise, return -1
  return render(:text => -1, :layout => false)
end

现在,我在我的测试中使用@response 对象......即:

def test_get_object_id_returns_invalid_for_non_existent_id
  # Act
  get :get_object_id, :id => 999

  # Assert
  assert_response :success
  assert_equal "-1", @response.body
end

但是,尽管对 Rails 来说大多是新手,但到目前为止我所看到的似乎表明,除了检查之外,可能还有更好的方法来做到这一点@request.body

所以,我对你们红宝石专家的问题是:这是最好的方法吗?

4

1 回答 1

3

我想你的位置已经到位了。

assert_select仅适用于 XML 内容,因此对于其他格式,您必须自己滚动。ActionController::TestCase如果我做了很多这些,我可能会添加一个命名的断言方法。

例如

def assert_response_equals(v)
  assert_equal v.to_s, @response.body, "Expected response body to be #{v.inspect}"
end

这将允许您跳过引号。

于 2009-10-01T19:15:12.393 回答