0

アプリケーションのrspec + capybaraテストを書いていて、スプレッドシートgemを使用してpdfを生成しているため、印刷アクションをテストする方法という問題が発生しました。これはダウンロード可能です。このファイルを印刷するには、iframeを使用していますか? ダウンロードは次の方法でテストできることを知っています

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

しかし、Print 用の response_headers はありますか?

ありがとうございました

4

1 に答える 1

2

印刷は、バックエンドや、ブラウザーのレンダリング エンジンでさえも気にする必要があるとは思いません。これは、カスタム機能 (Chrome など) またはデフォルトのオペレーティング システムの印刷パネル (Safari など) を介してブラウザでサポートされているものにすぎません。

これは次の質問につながります。あなたがテストしたいのは何ですか?印刷が機能するかどうかをテストしますか? これは、RSpec テストの範囲外のようです。あなたはすでに、ダウンロードされるユーザー用の PDF を作成する機能をテストしたと言っています。その瞬間から、その PDF に何が起こってもアプリケーションの範囲外になるため、テストすることはできず、テストするべきではありません。

PDF 機能が機能する限り、アプリケーションが機能することがわかります。個人的な経験からすると、次に起こることは完全にブラック ボックスであり、PDF が何であるかを理解していない人もいれば、プリンターの制御方法を知らない人もいます。したがって、このテストに集中する代わりに、PDF ダウンロードに付随するドキュメントを書くことに集中します。

アップデート

Window.print()関数を使用すると、次のことができます。

Window.print()チェックする値は返されませんが、その関数を独自の関数内にラップして、独自の戻り値を追加できます。

もちろん、それはラッパー関数が実際に呼び出されることをテストするだけで、print() 関数が正しく起動されたかどうかはテストしません。しかし安心してください。印刷機能がブラウザーで動作することを確認しているはるかに大きな企業があるため、Rails の基本的なメソッド ( など) をテストしてはならないのと同じように、や などvalidationsのブラウザーのテストもスキップする必要があります。print()back()

確認できる唯一のことは、ユーザーがjavascript を無効にしている場合に解決策を提供することです。

于 2012-06-22T15:51:54.550 に答える