Thorで作ったコマンドラインインターフェースをRspecでテスト

  • 49
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Thorで作ったコマンドラインインターフェース(CLI)のクラスをRSpecでテストする方法

  • ThorでCLIを作成すると以下のようにThorクラス継承したクラスを作る事になる。
    • 例えば以下のようなクラスを作ったとする
class MyCLI < Thor

  desc "run", "run task"
  method_option :output
  def run
     options[:output]
  end
end
  • このテストをする際に以下のように書くとoptionsに値をセットする事ができない。
it "should display output" do
  Sample.new.run.should eq "xxx"
end
  • optionsの値もセットした状態で実行するにはinvokeメソッドを使用する。
    • 第一引数はメソッド名、第二引数は引数、第三引数はoptionsの値をhashで渡す。
it "should display output" do
  Sample.new.invoke(:run, [], {output: "xxx"}).should eq "xxx"
end