【问题标题】:How to test what image is being displayed using rspec?如何测试使用 rspec 显示的图像?
【发布时间】:2012-09-19 15:19:04
【问题描述】:

根据正在查看的页面,我想为我的徽标使用不同的图像;主页上的标志更大。我喜欢使用请求规范来测试行为,所以我想做这样的事情:

describe 'Visit "advertentie/1"' do
    it 'contains add details' do
        add = create(:add_with_photos)
        visit add_path add
        page.should have_selector( 'img[alt="logo-small"]' ) # CHECK IMAGE ALT
        page.should have_content( add.name )
    end
end

并且测试会再次运行一些haml生成的html:

<div class='logo-wrapper'>
  <h1>
    <a href="/"><img alt="Logo-big" src="/assets/logo-small.png" />
    <br>
    <span>UpMarket</span>
    </a>
  </h1>
</div>

但是这个选择器不起作用。这可能吗?如何实现?

【问题讨论】:

  • 相关的 HTML 是什么样的?
  • 好吧,对于 100% TDD,HTML 应该看起来还不算什么,但无论如何我会是一个不好的方法并将它添加到我的问题中;)
  • TDD 确实意味着您的输出为零。很明显,have_selector 正在检查一些 HTML(或者应该有)。这就是我所要求的。

标签: ruby-on-rails testing rspec


【解决方案1】:

您尝试过have_css 方法吗?

have_css("img[src*='w3schools']")

(选择每个 src 属性值包含子字符串“w3schools”的&lt;img&gt; 元素)

【讨论】:

  • 绿色规格。要爱他们。谢谢, src 似乎是一个更可靠的测试属性,因为我希望 alts 更具描述性。也可以在更多情况下使用它,*,从未真正使用过。
  • 这对我有用,但* 有什么作用?我所能找到的只是它被用作“splat”,但这似乎不同。谢谢。
  • *= 属性选择器表示“属性包含子字符串”。有关可能的选择器的概述,请参阅w3schools
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
相关资源
最近更新 更多