世界一やさしいデータ分析教室

オーブンソースデータなどWeb上から入手できるデータを用いて、RとPython両方使って分析した結果を書いていきます

shinytest 特定のoutput要素のみテストを実施する方法

本記事は、Shiny Advent Calendar 2018の6日目の記事です。


そして、Shiny100本ノックの第30弾です。

今回は以下の補足記事として、ある特定の要素のみテストを実施する方法を紹介します。
www.randpy.tokyo


前回のおさらい

一旦前回の復習をしておきます。

  • Shinyアプリケーションのデグレを防ぐために、テストを書いておくことが大切
  • 機能を追加するたびにテストを実行して、既存コードを壊していないか確認することができる
  • shinytestライブラリを使うと、状態を簡単にスナップショットとして保存、そしてテスト実行をしてくれる

と言った便利なshinytestライブラリです。

が、デフォルトの状態だと、画面の全ての状態をスナップショットとして保存してくれるのですが、これだと少しだけ問題が。

テストする必要のない、例えばタイトルなどのテキスト部分も全て保存してしまうので、後でテキストを変更しようとしたときにテストが落ちてしまいます。
これは少し厄介ですので、必要なoutput要素のみスナップショット保存してテスト実行できるようにしましょう。

特定のoutput要素のみスナップショット保存する

といってもやり方はとてもシンプル。

recordTest("./shinytest-sample")

こちらのコマンドで、スナップショット保存画面にいきます。前回は、保存したい状態で「Take snapshot」をクリックすることでスナップショットを保存しました。

これを、Windowsユーザーであれば、Ctrl キーを押しながら保存したいoutput要素をクリックしてください。(MacユーザーならCmdキー)
すると、そのoutput要素のみが保存されています。
f:id:Np-Ur:20181207101315p:plain


最後に

ということで、shinytestの補足説明を行いました。
実は、recordTestからGUI上でテストを作成しなくても、テストスクリプトを記述することはできます。

もし機会があればこのあたり書いてみます。