unit testing vbg आरएसपीईसी-कठपुतली इकाई परीक्षण शुरू करने का सही तरीका



यूनिट टेस्ट क्या है (1)

मैंने एक सरल कठपुतली 4 वर्ग और एक इकाई परीक्षण बनाया है, इसके साथ साथ चलते हैं ( touch metadata.json; rspec-puppet-init modules/test/ ):

# modules/test/manifests/hello_world1.pp
class test::hello_world1 {
  file { "/tmp/hello_world1":
    content => "Hello, world!\n"
  }
}

# modules/test/spec/classes/test__hello_world1_spec.rb
require 'spec_helper'
describe 'test::hello_world1' do
  it { is_expected.to compile }
  it { is_expected.to contain_file('/tmp/hello_world1')\
    .with_content(/^Hello, world!$/) }
end

मैं modules/test/ में जबकि rspec spec/classes/test__hello_world1_spec.rb निष्पादित करके सफलतापूर्वक इकाई परीक्षण चला सकता हूँ।

अब मैं एक और अधिक उन्नत वर्ग के लिए आगे बढ़ना चाहूंगा जो दूसरे मॉड्यूल से कोड का उपयोग करता है, अर्थात् कॉन्सैट (मॉड्यूल ने modules/concat कॉन्सैट में स्थापित किया गया है):

# modules/test/manifests/hello_world2.pp
class test::hello_world2
{
  concat{ "/tmp/hello_world2":
    ensure => present,
  }
  concat::fragment{ "/tmp/hello_world2_01":
    target  => "/tmp/hello_world2",
    content => "Hello, world!\n",
    order   => '01',
  }
}

# modules/test/spec/classes/test__hello_world2_spec.rb
require 'spec_helper'
describe 'test::hello_world2' do
  it { is_expected.to compile }
  # ...
end

जब मैं modules/test में rspec spec/classes/test__hello_world2_spec.rb साथ इस यूनिट टेस्ट को चलाने का प्रयास करता हूं तो मुझे एक त्रुटि संदेश मिला जिसमें इसमें शामिल है:

विफलता / त्रुटि: यह संकलन के दौरान त्रुटि {is_expected.to} संकलित है: मूल्यांकन त्रुटि: संसाधन विवरण का मूल्यांकन करते समय त्रुटि, अज्ञात संसाधन प्रकार: 'कॉन्सैट'

मुझे मूल कारणों पर संदेह है कि rspec अन्य मॉड्यूल नहीं मिल सकता है, क्योंकि इसे "मॉड्यूलपेथ" नहीं बताया गया है

मेरा प्रश्न यह है: यूनिट परीक्षणों को शुरू करने के लिए मुझे किस प्रकार से मानना ​​है, खासकर उन लोगों के लिए जिन्हें अन्य मॉड्यूल तक पहुंच की आवश्यकता है?


अपने प्लेटफॉर्म के लिए अपने डाउनलोड पृष्ठ से पीडीके को स्थापित करें। pdk new module , और pdk new class का उपयोग करके मॉड्यूल को पुनः बनाएं, या गाइड का अनुसरण करके।

अब, मैं शायद आपके कोड में तात्कालिक समस्या क्या है: आपका कोड एक कठपुतली फोर्ज मॉड्यूल, puppetlabs/concat पर निर्भर करता है लेकिन आपने इसे उपलब्ध नहीं किया है। पीडीके मॉड्यूल टेम्पलेट पहले से ही आपके मॉड्यूल के लिए फिक्स्चर लोड करने के लिए पहले से कॉन्फ़िगर puppetlabs_spec_helper है।

puppetlabs_spec_helper को आपके लिए यह बताने के लिए, आपको निम्न सामग्री के साथ फाइल .fixtures.yml आवश्यकता है:

fixtures:
  forge_modules:
    stdlib: puppetlabs/stdlib
    concat: puppetlabs/concat

ध्यान दें कि आपको भी puppetlabs/stdlib , क्योंकि यह puppetlabs/stdlib निर्भरता है

यदि आप अधिक स्थिरता संभावनाएं तलाशना चाहते हैं, तो कृपया puppetlabs_spec_helper के डॉक्स देखें

इस सब के साथ, और पीडीएलके द्वारा प्रदान किए गए प्रारंभिक कोड कंकाल में आपके द्वारा पोस्ट किए गए कोड के नमूने और परीक्षण सामग्री को एकीकृत करने से, जब आप चलाते हैं तो आपके परीक्षण अब सभी पास होंगे:

$ pdk test unit

ध्यान दें कि मैंने मूलभूत तकनीकों के बारे में सब कुछ लिखा है, ब्लॉग पोस्ट में, यह दिखाता है कि कैसे टॉप-पीपेट और खरोंच ( रेफरी ) से अधिक सेट अप करें, और यह अभी भी इस विषय पर सबसे अधिक आधुनिक संदर्भ प्रतीत होता है।

सामान्य रूप में आरएसपीईसी-कठपुतली के बारे में अधिक पढ़ने के लिए, कृपया आधिकारिक आरएसपीसी-कठपुतली दस्तावेज़ साइट देखें





rspec-puppet