Class CLI < Thor
desc "run [age]" "user passes age"
method_option :age,type:'numeric'
def run
variable=options[:a] if options[:a].present?
call_method(a)
end
end
如果我想测试以下行,如何使用 Rspec 来模拟
options[:a]
?
variable=options[:a] if options[:a].present?
另外,如何测试局部变量是否更新了?
你可以嘲笑“选项”
let(:cli) { CLI.new }
allow(cli).to receive(:options){ { a:2 } }
这里建议的解决方案或其他问题都不适合我,但我在这里找到了解决方案: https://github.com/brianokeefe/blog/blob/master/2014-05-31-testing-thor-command-lines-with-rspec.md#handling-input
所以你会像这样进行测试:
subject(:cli) { CLI.new }
it "should work" do
cli.options = {:age => 2}
expect { cli.run }.to ...
end