2012-11-25 9 views
10

मैं क्लोजरस्क्रिप्ट वेब ऐप पर कुछ सेलेनियम आधारित परीक्षण करने के लिए क्लोज-वेबड्राइवर का उपयोग कर रहा हूं। कभी-कभी, ऐप में कुछ ऐसा होता है जिसे मैं परीक्षण के दौरान परेशान करने में सक्षम होना चाहता हूं। मुझे लगता है कि clj-webdriver में (execute-script js args) नामक कुछ है जो जावास्क्रिप्ट कोड की एक स्ट्रिंग लेता है और इसे वर्तमान परीक्षण ब्राउज़र पर चलाता है। मैंने इसका परीक्षण किया है और ऐसा लगता है कि यह काम करता है। मैं क्लोजरस्क्रिप्ट कोड को execute-script पर पास करना चाहता हूं। मुझे ऐसा कुछ चाहिए जो क्लोजरस्क्रिप्ट कोड में मेरे क्लोजर फॉर्म को संकलित करेगा।क्लोजरस्क्रिप्ट फॉर्म को क्लोजर के भीतर से कैसे संकलित किया जाए?

मैं निम्नलिखित question देखता हूं जो संबंधित है। यह क्लच से जेएस/एमिट फ़ंक्शन का उपयोग करने के लिए कहता है। मैं क्लच खोज की है और पाया यह cljs-views.clj में (देखें) में केवल उल्लेख मैं का प्रयास किया है एक repl में निम्नलिखित:

user> (use 'com.ashafa.clutch.cljs-views) 
    nil 
user> view 
    <core$comp$fn__4034 [email protected]> 
user> js/emit 
    CompilerException java.lang.RuntimeException: No such namespace: js, #compiling (NO_SOURCE_PATH:1) 
user> 

यह बहुत आश्चर्य की बात नहीं है, कैसे js एक नियमित clojure namesapce में हो सकता है? लेकिन मैं क्लोजरस्क्रिप्ट (जावास्क्रिप्ट) कोड उत्पन्न करने के लिए इस (या किसी अन्य) सिस्टम का उपयोग कैसे करूं जिसे मैं execute-script पर भेज सकता हूं?

उत्तर

4

cljs.closure/build समारोह का उपयोग करें:

(use '[cljs.closure :only [build]]) 
(build '(print "hello") {:optimizations :simple :pretty-print true}) 

closure.clj के तल पर एक टिप्पणी में अधिक उदाहरण हैं। फाइल को आउटपुट करने के विकल्प भी हैं।

संबंधित मुद्दे