我正在尝试测试我与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。我想更新,但我不能,因为我正在处理的应用程序暂时没有更新。
答案 0 :(得分:0)
这是因为您使用带有相对路径的image_tag,而不是完整路径(协议+域+ relative_path)。
config.action_controller.asset_host
配置为相关值或
使用image_url
:
image_url("rails.png")
# => "http://www.example.com/assets/rails.png"
参考文献: