我的Rails 3.2应用程序的Rspec控制器测试工作如下:
get 'home'
response.should have_selector("img", alt: "can-logo', src: "/assets/can-logo.png")
当我们使用Rails 3.2时,测试通过。现在使用Rails 4.2,测试失败,错误消息如下所示:
Failure/Error: response.should have_selector("img", alt: "can-logo", src: "/assets/can-logo.png")
expected following output to contain a <img alt='can-logo' src='/assets/can-logo.png'/>
实际响应具有以下字符串:
<img src="/assets/can-logo-7c448d46877fafd50ab64f7abae0ca10719221722dd3d1ae257f24fc449efa1d.png" alt="can-logo 7c448d46877fafd50ab64f7abae0ca10719221722dd3d1ae257f24fc449efa1d">
(作为参考,经过大量调整宝石,测试和一些代码,我可以在本地运行应用程序,这个用例工作正常,Rails控制台工作正常,我们的测试套件中的700个测试中有685个通过。在15个失败的测试中,大约5个看起来像这个失败)。
这看起来像是在用资产做一些时髦的事情,但我现在不知道如何让RSpec忽略它,或者如何在没有时髦的#34; 7c44的情况下提供链接。 &#34;字符串在图像名称或alt名称的末尾。
有没有办法解决这个问题?
答案 0 :(得分:0)
假设have_selector可以只采用CSS选择器,你应该能够做类似下面的事情
response.should have_selector('img[alt^="can-logo-"][src^="/assets/can-logo-"][src$=".png"]')