Edited at

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

More than 3 years have passed since last update.

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