2015-05-13 7 views
8

के लिए जैस्मीन कैसे सेट करें मुझे जैस्मीन के साथ टाइपस्क्रिप्ट प्रोजेक्ट के यूनिट परीक्षण को सेट करने के तरीके के बारे में कुछ मार्गदर्शन चाहिए।टाइपस्क्रिप्ट प्रोजेक्ट

टेस्ट कल्पना फ़ाइल इस तरह दिखता है:

/// <reference path="../../../typings/tsd.d.ts" /> 
import {Mediator} from '../../../services/remoting/Mediator'; 

describe('Mediator',() => 
{ 
    let mediator: Mediator; 

    beforeEach(() => 
    { 
     mediator = new Mediator(); 
    }); 

    it('blah blah',() => 
    { 
     expect(mediator.TEST).toBeDefined(); 
    }); 
}); 

मैं परीक्षण चलाने के लिए NPM चमेली मॉड्यूल का उपयोग करें। jasmine.json इस तरह बनाया जे एस कल्पना फ़ाइलों की ओर इशारा करते है:

{ 
    "spec_dir": "build/spec", 
    "spec_files": [ 
    "**/*.js" 
    ] 
} 

निर्माण कल्पना फ़ाइल इस तरह दिखता है:

/// <reference path="../../../typings/tsd.d.ts" /> 
define(["require", "exports", '../../../services/remoting/Mediator'], function (require, exports, Mediator_1) { 
    describe('factory: Mediator', function() { 
     var mediator; 
     beforeEach(function() { 
      mediator = new Mediator_1.Mediator(); 
     }); 
     it('should have defined all required fields', function() { 
      expect(mediator.ExecuteQuery).toBeDefined(); 
     }); 
    }); 
}); 
//# sourceMappingURL=Mediator.spec.js.map 

जब मैं परीक्षण चलाने के लिए चमेली अपरिभाषित 'परिभाषित करें' समारोह की शिकायत की कोशिश :

ReferenceError: define is not defined 

मैं टाइपप्रति + जैस्मीन पर खोज करने के लिए कोशिश की है लेकिन वहाँ ज्यादा जानकारी नहीं है (और मैं पूरी VisualStudio का उपयोग नहीं करना चाहते हैं)। इसलिए अगर कोई मुझे टाइपस्क्रिप्ट + जैस्मीन सेट करने और मेरी गलती कहां सेट करने की सही दिशा में इंगित कर सकता है तो मैं सराहना करता हूं।

अग्रिम धन्यवाद।

उत्तर

5

ऐसा लगता है कि आप --module amd ध्वज का उपयोग करके संकलित कर रहे हैं, जो एसिंक्रोनस मॉड्यूल के लिए डिज़ाइन किया गया है (जैसे कि जब आप RequJS का उपयोग करते हैं)।

यदि आप नोड पर चल रहे हैं, तो आपको --module commonjs की आपूर्ति करने की आवश्यकता है। यह निम्न उत्पादन में परिणाम होगा:

var mediator_1 = require('../../../services/remoting/Mediator'); 

(के रूप में यह आप के लिए तुरंत एक नाम से उत्पन्न होने वाला ES6 शैली आयात नीचे संकलन वैरिएबल का नाम बदल सकते हैं हालांकि)।

+0

त्वरित उत्तर के लिए धन्यवाद। यह आपके सुझाव के साथ काम करता है। मेरा प्रोजेक्ट एक एसपीए एप्लीकेशन है जो ब्राउज़र में चलाया जाएगा। मैं इसे एनएसपी पैकेज चलाने के लिए VSCode + node.js में विकसित करता हूं। जहां तक ​​मैं समझता हूं कि एएमडी ब्राउज़र आधारित ऐप्स के लिए अधिक उपयुक्त है, लेकिन मैं node.js टूल्स का उपयोग करके विकसित करता हूं -> इसके बदले में सामान्य.जेएस की आवश्यकता होती है। क्या इस्तेमाल किया जाना चाहिए? – Amid

+0

एक दिलचस्प conundrum :) यदि आप RequJS का उपयोग कर रहे हैं (लेकिन अपने स्थानीय विकास के लिए '- मॉड्यूल कॉमनज' का उपयोग करना जारी रखते हैं तो आप ब्राउजर में उपयोग के लिए 'मॉड्यूल एमडीडी' के साथ संकलित करना चाहते हैं। दोनों प्रणालियों में विभिन्न मॉड्यूल पैटर्न हैं। – Fenton

+0

बात यह है कि मैं RequJS का उपयोग नहीं करता हूं। अब तक मैं सादा टाइपस्क्रिप्ट का उपयोग करता हूं। और फिर त्रुटि आने पर मैं कुछ यूनिट परीक्षण जोड़ना चाहता था। अगर मैं सही ढंग से समझता हूं कि जब मैं संकलित करता हूं- कमांड ध्वज फ़ंक्शन का उपयोग करता है (जैसे 'आवश्यकता') पहले से ही node.js. का हिस्सा हैं। और इसलिए कोई त्रुटि नहीं होती है। जब मैं -मड फ्लैग के साथ संकलित करता हूं तो 'परिभाषित' जैसे फ़ंक्शन डिफ़ॉल्ट रूप से ब्राउज़र द्वारा हुड के तहत प्रदान किए जाते हैं लेकिन node.js. द्वारा नहीं। क्या यह मामला है? – Amid

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