को अनुकरण/पास करने के लिए कैसे करें मेरे पास एक कमांड लाइन एप्लिकेशन है जो विकल्पों के विश्लेषण को संभालने के लिए थोर का उपयोग करता है। मैं इकाई-परीक्षण और/या न्यूनतम के साथ कोड के खिलाफ कमांड लाइन कार्यक्षमता का परीक्षण करना चाहता हूं।इकाई एक रूबी कमांड लाइन एप्लिकेशन के कोड का परीक्षण - एआरजीवी के
मैं यह पता लगाने कैसे यकीन है कि ARGV सरणी (जो आम तौर कमांड लाइन से विकल्प पकड़ होगा) बनाने के लिए नहीं कर पा रहे अपने परीक्षण के लिए विकल्पों रखती है ताकि वे कोड के खिलाफ परीक्षण किया जा सकता है।
विशिष्ट अनुप्रयोग कोड:
# myapp/commands/build.rb
require 'thor'
module Myapp
module Commands
# Define build commands for MyApp command line
class Build < Thor::Group
include Thor::Actions
build = ARGV.shift
build = aliases[build] || build
# Define arguments and options
argument :type
class_option :test_framework, :default => :test_unit
# Define source root of application
def self.source_root
File.dirname(__FILE__)
end
case build
# 'build html' generates a html
when 'html'
# The resulting html
puts "<p>HTML</p>"
end
end
end
end
निष्पादन
# bin/myapp
टेस्ट फ़ाइल
# tests/test_build_html.rb
require 'test/unit'
require 'myapp/commands/build'
class TestBuildHtml < Test::Unit::TestCase
include Myapp::Commands
# HERE'S WHAT I'D LIKE TO DO
def test_html_is_built
# THIS SHOULD SIMULATE 'myapp build html' FROM THE COMMAND-LINE
result = MyApp::Commands::Build.run(ARGV << 'html')
assert_equal result, "<p>HTML</p>"
end
end
मैं परीक्षण वर्ग में ARGV में एक सरणी पारित करने में सक्षम किया गया है, लेकिन एक बार जब मैं माईप/कमांड/एआरजीवी का निर्माण करता हूं तो खाली दिखाई देता है। मुझे यह सुनिश्चित करने की ज़रूरत है कि बिल्ड कमांड काम करने के लिए एआरजीवी सरणी 'बिल्ड' और 'एचटीएमएल' रख रही है और इसे पास करने के लिए।
धन्यवाद, डेव! ठीक वही जो मेरे द्वारा खोजा जा रहा था। इस बीच में मैंने आपकी पुस्तक [रूबी में बहुत बढ़िया कमांड लाइन अनुप्रयोगों को पढ़ना] समाप्त किया (http://pragprog.com/book/dccar/build-awesome-command-line-plplications-in-ruby)। ;-) मैंने कम से कम स्वीकृति परीक्षण प्राप्त करने के लिए ककड़ी के साथ अरुबा लागू किया। –