Rails设置方法故障排除。测试@response与实际格式不匹配

时间:2014-07-18 17:32:31

标签: ruby-on-rails

我正在尝试测试我与css_select一起使用的图像数组,以确定它们是否具有正确的格式http / https。在实际的制作网站上,我有30张需要选择的图片。当我运行rake测试时,我将从设置方法生成@ response.body,但我没有得到确切的渲染模板。而不是30个图像我只捕获1个图像。以下是我的代码片段:

 require File.dirname(__FILE__) + '/../test_helper'

 # Re-raise errors caught by the controller.
 class AboutController; def rescue_action(e) raise e end; end

 class AboutControllerTest < ActionController::TestCase
   fixtures :accounts, :kudos

   def setup
     @controller = AboutController.new
     @request    = ActionController::TestRequest.new
     @response   = ActionController::TestResponse.new
   end



   def test_index_attachments_protocol
     get :home
     puts @response.body
     assert_response :success
     css_select(".top_ten_row .top_ten_icon img").each  do |anchor|

       assert_match anchor["src"], /http:/
     end
     #grab everything else besides the above image
   end

是否因为测试数据库而未捕获图像?此外,捕获的图像不具有与其关联的http或https。格式只显示

src="/attachments/0000/0001/test_logo_small.png

这也是测试数据库的结果吗?

最后,我使用Rails 2.3。我想更新,但我不能,因为我正在处理的应用程序暂时没有更新。

1 个答案:

答案 0 :(得分:0)

这是因为您使用带有相对路径的image_tag,而不是完整路径(协议+域+ relative_path)。

  • config.action_controller.asset_host配置为相关值

  • 使用image_url

    image_url("rails.png")
    # => "http://www.example.com/assets/rails.png"
    

参考文献: