0

我一直在为我的应用程序编写rspec + capybara测试并提出了一个问题 - 如何测试打印操作,因为我正在使用电子表格 gem 生成 pdf,然后可以下载。为了打印这个文件,我正在使用iframe?我知道,下载可以用

page.response_headers['Content-Disposition'].should include("filename=\"file.png\"")

但是有任何用于打印的 response_headers 吗?

谢谢

4

1 回答 1

2

我不认为打印是后端应该关注的事情,甚至是浏览器的渲染引擎。它只是浏览器通过自定义功能(如 Chrome)或默认操作系统打印面板(如 Safari)支持的东西。

这让我想到了下一个问题。你想测试什么?您想测试打印是否有效?对于您的 RSpec 测试,这似乎有点超出范围。您已经说过您测试了为用户创建 PDF 的功能,然后下载该 PDF。从那一刻起,该 PDF 发生的任何事情都超出了您的应用程序的范围,因此它不可测试,当然也不应该测试。

只要 PDF 功能有效,您就知道您的应用程序有效。从个人经验来看,接下来发生的事情完全是一个黑匣子,有些人不了解 PDF 是什么,而另一些人则不知道如何控制他们的打印机。因此,我不会专注于这个测试,而是专注于编写一些与您的 PDF 下载相关的文档。

更新

如果您使用该Window.print()功能,您可以执行以下操作:

Window.print()不返回任何值供您检查,但您可以将该函数包装在您自己的函数中并添加您自己的返回值。

当然,这只会测试包装函数是否被实际调用,而不是 print() 函数是否正确触发。但请放心,有更大的公司确保他们的打印功能在他们的浏览器中工作,所以就像你不应该测试基本的 Rails 方法一样validations,你也应该跳过测试浏览器的东西,比如print()back()

您唯一可以检查的是,当用户禁用 javascript时,您是否提供了解决方案。

于 2012-06-22T15:51:54.550 回答