我正在使用clamp - 我的ruby应用程序的命令行框架,并且不确定如何启动我的clamp对象进行单元测试。我的夹子对象看起来像这样
class myCommand < Clamp::Command
parameter "first", "first param"
parameter "second", "second param"
def execute
#Data
end
end
并通过命令行运行,如此
$~> myCommand first second
目前,在我的rspec测试中,我必须直接设置对象属性。
before(:each) do
$stdout = StringIO.new
@my_command = myCommand.new("")
@my_command.first= "first"
@my_command.second= "second"
end
这似乎不是启动测试夹对象的正确方法,但我不确定正确的方法。想知道是否有人有任何想法。感谢
答案 0 :(得分:2)
所以,你正在做的是:
#execute
这是测试Clamp命令的好方法,可能是对#execute
方法的逻辑进行单元测试的最佳方法。
如果您希望测试解析命令行参数,可以使用#parse
方法,并检查属性值,例如
before do
@command = MyCommand.new("my")
end
describe "#parse" do
before do
@command.parse(["FOO", "BAR"])
end
it "sets attribute values" do
@command.first.should == "FOO"
@command.second.should == "BAR"
end
end
但是这开始测试Clamp本身,而不是你自己的代码...所以我可能不会打扰。
如果要同时测试解析和执行,请尝试以下方法:
describe ".run" do
context "with two arguments" do
it "does something useful" do
MyCommand.run("cmd", ["ARG1", "ARG2"])
# ... test for usefulness
end
end
end
但是,您目前正在测试的方式非常好。我希望有所帮助。