मेरे पास कर्म + जैस्मीन का उपयोग करके परीक्षणों के साथ एक AngularJS ऐप है। मेरे पास एक फ़ंक्शन है जो मैं परीक्षण करना चाहता हूं जो एक बड़ी JSON ऑब्जेक्ट लेता है, इसे एक प्रारूप में कनवर्ट करता है जो बाकी ऐप द्वारा अधिक उपभोज्य है, और उस परिवर्तित ऑब्जेक्ट को वापस करता है। बस।
मेरे परीक्षणों के लिए, मैं चाहूंगा कि आपके पास JSON फ़ाइलें (* .json) अलग हों जिसमें केवल JSON सामग्री हो - कोई स्क्रिप्ट नहीं। परीक्षण के लिए, मैं JSON फ़ाइल को लोड करने और उस फ़ंक्शन को ऑब्जेक्ट में पंप करने में सक्षम होना चाहूंगा जिसे मैं परीक्षण कर रहा हूं।
मुझे पता है यहाँ वर्णित मैं एक नकली कारखाने के भीतर JSON एम्बेड कर सकते हैं: http://dailyjs.com/2013/05/16/angularjs-5/ लेकिन मैं वास्तव में चाहते हैं JSON स्क्रिप्ट के भीतर समाहित नहीं किया जा करने के लिए - बस सीधे JSON फ़ाइलें।
मैंने कुछ चीजों की कोशिश की है, लेकिन मैं इस क्षेत्र में काफी अच्छा हूं। सबसे पहले, मैंने अपनी JSON फ़ाइल को शामिल करने के लिए अपना कर्म सेट किया, बस यह देखने के लिए कि यह क्या करेगा:
files = [
...
'mock-data/**/*.json'
...
]
इसके परिणामस्वरूप:
Chrome 27.0 (Mac) ERROR
Uncaught SyntaxError: Unexpected token :
at /Users/aaron/p4workspace4/depot/sitecatalyst/branches/anomaly_detection/client/anomaly-detection/mock-data/two-metrics-with-anomalies.json:2
तो फिर मैंने इसे केवल फाइलों की सेवा करने के लिए बदल दिया और उन्हें "शामिल" नहीं किया:
files = [
...
{ pattern: 'mock-data/**/*.json', included: false }
...
]
अब जब कि वे केवल सेवा कर रहे हैं, मुझे लगा कि मैं अपनी युक्ति से $ http का उपयोग करके फ़ाइल में लोड करने का प्रयास करूंगा:
$http('mock-data/two-metrics-with-anomalies.json')
जब मैंने कल्पना की तो मुझे प्राप्त हुआ:
Error: Unexpected request: GET mock-data/two-metrics-with-anomalies.json
मेरी समझ में इसका मतलब है कि यह $ httpBackend से नकली प्रतिक्रिया की उम्मीद करता है। इसलिए ... इस बिंदु पर मुझे पता नहीं था कि कोणीय उपयोगिताओं का उपयोग करके फ़ाइल को कैसे लोड किया जाए, इसलिए मैंने सोचा कि मैं jQuery को देखने की कोशिश करूंगा कि क्या मुझे कम से कम काम करने के लिए मिल सकता है:
$.getJSON('mock-data/two-metrics-with-anomalies.json').done(function(data) {
console.log(data);
}).fail(function(response) {
console.log(response);
});
इसका परिणाम यह होगा:
Chrome 27.0 (Mac) LOG: { readyState: 4,
responseText: 'NOT FOUND',
status: 404,
statusText: 'Not Found' }
मैं चार्ल्स में इस अनुरोध का निरीक्षण करता हूं और यह एक अनुरोध कर रहा है
/mock-data/two-metrics-with-anomalies.json
जबकि कर्मा द्वारा मेरे द्वारा शामिल की जाने वाली बाकी फाइलें उदाहरण के लिए अनुरोध की जा रही हैं:
/base/src/app.js
जाहिर तौर पर कर्मा ने फाइलों को सेवा देने के लिए किसी प्रकार की आधार निर्देशिका की स्थापना की। तो किक के लिए मैंने अपने jquery डेटा अनुरोध को बदल दिया
$.getJSON('base/mock-data/two-metrics-with-anomalies.json')...
और यह काम करता है! लेकिन अब मुझे गंदा लग रहा है और शॉवर लेने की जरूरत है। मुझे फिर से साफ महसूस करने में मदद करें।