के साथ मैं Vimrunner का उपयोग कर एक विम प्लगइन इकाई-परीक्षण करने के लिए उपयोग कर रहा हूं। सब कुछ काम कर रहा है, लेकिन मैं स्क्रिप्ट-स्थानीय कार्यों को निष्पादित करने के लिए एक बेहतर/कैनोलिक तरीका ढूंढ रहा हूं। चूंकि वे सीधे स्क्रिप्ट के बाहर दिखाई नहीं दे रहे हैं, इसलिए मैं वर्तमान में स्क्रिप्ट के <SID>
का खुलासा कर रहा हूं और उन्हें चलाने के लिए अपनी कॉल में इसे प्रस्तुत कर रहा हूं।यूनिट परीक्षण वीम स्क्रिप्ट-स्थानीय कार्यों Vimrunner
function! s:SID()
let fullname = expand("<sfile>")
return matchstr(fullname, '<SNR>\d\+_')
endfunction
let g:my_plugin_SID = s:SID()
कि जैसे के रूप में सिड सामने आ जाएगी:
मैं सिड बेनकाब करने के लिए मेरे प्लगइन के लिए इस कोड जोड़ने के लिए <SNR>18_
।
:call <SNR>18_some_function()
तो मैं एक कल्पना में यह कर:
describe "s:reverse_string" do
let!(:sid) { VIM.command("echo g:my_plugin_SID") }
def reverse_string(string)
VIM.command("echo #{sid}reverse_string('#{string}')")
end
it "does something" do
reverse_string("foo").should == "oof"
end
end
के बाद से विम कार्यों सभी वैश्विक, और सिर्फ नाम-munged हैं, पटकथा स्थानीय कार्यों सिड लगाकर द्वारा स्क्रिप्ट के बाहर लागू किया जा सकता है क्या ऐसा करने के लिए इससे अच्छा तरीका है?
मैं उस दिशा में आगे बढ़ रहा था, लेकिन परीक्षण के लिए चीजों को अपनाने में संकोच नहीं कर रहा हूं। मुझे पता है कि यह वास्तव में कोई फर्क नहीं पड़ता है, लेकिन मैं नामस्थान को अर्थपूर्ण के रूप में रखना चाहता हूं क्योंकि विम अनुमति देता है। मुझे उत्पादन में परीक्षण कोड इंजेक्शन से बचने के लिए इसे 'स्क्रिप्ट नाम' से बाहर निकालने का विचार पसंद है। अभी भी अन्य सुझावों के लिए खुला है। –
मैं MySugugin # MyFunction() के साथ MyS: MyFunction() को प्रतिस्थापित करने का प्रयास कर रहा हूं, लेकिन फिर उसी फ़ाइल में मैपिंग में इसे कॉल करने के लिए काम नहीं करना प्रतीत होता है। क्या मुझसे कोई चूक हो रही है? – NicolasWebDev
@ साथर्स: 'मायप्लगिन' निश्चित रूप से आपकी प्लगइन का सटीक नाम होना चाहिए। –