我一直在为我的应用程序编写 rspec + capybara 测试,并提出了一个问题 - 如何测试Print操作,因为我正在使用电子表格gem生成pdf,然后是下载。要打印此文件,我正在使用iframe?我知道,可以使用
测试下载page.response_headers['Content-Disposition'].should include("filename=\"file.png\"")
但Print有任何response_headers吗?
谢谢
答案 0 :(得分:2)
我不认为打印是后端应该关注的东西,甚至不是浏览器的渲染引擎。浏览器通过自定义功能(如Chrome)或默认操作系统打印面板(如Safari)支持浏览器。
这让我想到了下一个问题。你想测试什么?您想测试打印是否有效?对于您的RSpec测试来说,这似乎有点超出范围。您已经说过要测试为用户创建PDF的功能,然后下载该功能。从那一刻开始,无论发生在PDF上的是什么,都超出了应用程序的范围,因此它不可测试,而且肯定不应该进行测试。
只要PDF功能有效,您就知道您的应用程序有效。从个人经验来看,接下来发生的事情完全是一个黑盒子,有些人不了解PDF是什么,有些人不知道如何控制他们的打印机。因此,我不会专注于这个测试,而是专注于编写与PDF下载相关的一些文档。
<强>更新强>
如果您使用Window.print()
函数,则可以执行以下操作:
Window.print()
不返回任何值供您检查,但您可以将该函数包装在您自己的函数中并添加您自己的返回值。
当然,这只会测试实际调用包装函数,但是如果print()函数正确触发则不会。但请放心,有更大的公司确保他们的打印功能在他们的浏览器中有效,所以就像你不应该像validations
那样测试基本的Rails方法一样,你也应该跳过测试浏览器之类的东西,比如{{ 1}}和print()
。
您唯一可以检查的是,当用户 javascript已停用时,您会提供解决方案。