2012-06-22 40 views
0

我一直在寫rspec + capybara爲我的應用程序進行測試,並提出了一個問題 - 如何測試打印操作,因爲我使用電子表格gem生成pdf,然後可下載。爲了打印這個文件我使用iframe?我知道,下載可以用測試打印動作

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

但是是否有任何打印的response_headers?

謝謝

回答

2

我不認爲印刷的東西,後端要關心,甚至是瀏覽器爲此事的渲染引擎。它只是通過瀏覽器或通過自定義功能(如Chrome)或默認操作系統打印面板(如Safari)支持的。

這給我帶來了下一個問題。你想要測試什麼?你想測試打印是否有效?這對您的RSpec測試來說似乎有點超出範圍。您已經說過您測試了爲用戶創建PDF然後下載的函數。從那一刻起,無論發生什麼PDF超出了您的應用程序的範圍,所以它不是可測試的,並且絕對不應該被測試。

只要PDF功能起作用,您就知道您的應用程序有效。從個人經驗來看,接下來發生的事情完全是一個黑匣子,有些人不瞭解PDF是什麼,有些人不知道如何控制他們的打印機。所以我不會專注於這個測試,而是專注於編寫一些隨PDF下載一起提供的文檔。

更新

這裏的,如果你使用Window.print()功能,你可以做什麼:

Window.print()不返回任何值,你檢查的,但你可以換自己的函數內部的功能,並添加你自己的回報價值。

當然,這隻會測試包裝函數是否實際調用,但如果print()函數正確啓動則不會。但請放心,有更大的公司確保他們的打印功能在他們的瀏覽器中正常運行,所以您不應該像測試validations那樣測試基本的Rails方法,您也應該跳過測試瀏覽器的東西,如print()back()

您可以檢查的唯一的事情是,當用戶有JavaScript禁用時,您可以提供解決方案。

+0

基本上,我的意圖是測試是否在我們的模板(不是PDF內)中按下「打印」按鈕不會加載帶有錯誤消息的另一個頁面,並提供打印PDF的機會。哦,謝謝你的迴應。 –

+0

我更新了我的答案,以澄清您在調用Window.print()時可能會做些什麼。但即使如此,你可以測試的東西也是有限的。 – JeanMertz