2015-06-16 11 views
15

का उपयोग कर यूनिट परीक्षण मैं संकलन करने के लिए जैस्मीन का उपयोग कर टाइपस्क्रिप्ट में लिखित यूनिट परीक्षण प्राप्त करने का प्रयास कर रहा हूं। मेरी यूनिट-टेस्ट फ़ाइल में निम्न के साथ, Resharper मुझे jasmine.d.ts से आयात प्रकारों के लिंक के साथ संकेत देता है।जैस्मीन और टाइपस्क्रिप्ट

/// <reference path="sut.ts" /> 
/// <reference path="../../../scripts/typings/jasmine/jasmine.d.ts" /> 

describe("Person FullName", function() { 
    var person; 

    BeforeEach(function() { 
     person = new Person(); 
     person.setFirstName("Joe"); 
     person.setLastName("Smith"); 
    }); 

    It("should concatenate first and last names", function() { 
     Expect(person.getFullName()).toBe("Joe, Smith"); 
    }); 
}); 

तो मैं लिंक पर क्लिक करें और निम्नलिखित के साथ अंत (वास्तव में ReSharper केवल के साथ वर्णन समारोह पहले से जुड़ा हुआ है, इसलिए मैं मैन्युअल रूप से पहले से जुड़ा हुआ अन्य जैस्मीन कॉल "जैस्मीन।"):

/// <reference path="sut.ts" /> 
/// <reference path="../../../scripts/typings/jasmine/jasmine.d.ts" /> 
import Jasmine = require("../../../Scripts/typings/jasmine/jasmine"); 

Jasmine.describe("Person FullName", function() { 
    var person; 

    Jasmine.BeforeEach(function() { 
     person = new Person(); 
     person.setFirstName("Joe"); 
     person.setLastName("Smith"); 
    }); 

    Jasmine.It("should concatenate first and last names", function() { 
     Jasmine.Expect(person.getFullName()).toBe("Joe, Smith"); 
    }); 
}); 

हालांकि आयात विवरण में त्रुटि संदेश के साथ एक लाल squiggly लाइन है "बाहरी मॉड्यूल को हल करने में असमर्थ ../../../scripts/typings/jasmine/jasmine। मॉड्यूल को गैर-मॉड्यूल प्रकार के लिए उपनाम नहीं किया जा सकता है"

कोई त्रुटि क्या इस त्रुटि का कारण बन रहा है? मैंने जांच की है कि "मॉड्यूल सिस्टम" विकल्प मेरी प्रोजेक्ट बिल्ड सेटिंग्स में एएमडी पर सेट है। मैंने यह भी जांच लिया है कि चमेली मॉड्यूल को jasmine.d.ts में परिभाषित किया गया है। मैंने DefinitelyTyped साइट से इस फ़ाइल को डाउनलोड किया।

declare module jasmine { 
    ... 
} 
+1

ES6। es5: 'वर जैस्मीन = की आवश्यकता होती है ('पथ/यहाँ');'। 'पहले से', 'यह' और 'अपेक्षा' के बजाय 'पहले से', 'it' और' अपेक्षा 'का उपयोग करें। – marcel

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने टाइपस्क्रिप्ट में सोचा निम्नलिखित निम्नलिखित मान्य है? आयात जैस्मीन = आवश्यकता ("...")। यद्यपि शायद यह इतनी संकलन त्रुटियों को नहीं दे रहा है ... – aw1975

उत्तर

3

अपने चमेली html फ़ाइल को यह शामिल करें, ...

<script type="text/javascript" src="jasmine/lib/jasmine-2.0.0/jasmine.js"></script> 

... या NPM चमेली पैकेज स्थापित:

npm install --save-dev jasmine 

जब आप दूसरा तरीका उपयोग कर रहे हैं (मॉड्यूल के रूप में चमेली) आपको इसे आयात करना होगा:

var jasmine = require('jasmine'); 

या

import jasmine from 'jasmine'; 

तो अन्य कोड बदलने के लिए:

jasmine.describe("Person FullName", function() { 
    var person; 

    jasmine.beforeEach(function() { 
     person = new Person(); 
     person.setFirstName("Joe"); 
     person.setLastName("Smith"); 
    }); 

    jasmine.it("should concatenate first and last names", function() { 
     jasmine.expect(person.getFullName()).toBe("Joe, Smith"); 
    }); 
}); 

निजी तौर पर मैं चमेली NPM मॉड्यूल का उपयोग किए बिना पहला तरीका पसंद करेंगे। (मैं अभी तक मॉड्यूल का परीक्षण नहीं किया है)

6

मेरे लिए मैंने किया था निम्नलिखित:

स्थापित Typings

npm install typings --global 

तो चमेली के लिए में typings जोड़ने

typings install dt~jasmine --save --global 
6

इस रखो अपनी टाइपस्क्रिप्ट स्पेक फ़ाइल के शीर्ष पर:

/// <reference path="../../node_modules/@types/jasmine/index.d.ts" /> 
let Jasmine = require('jasmine'); 

आपको लगता है कि काम करने के लिए निम्नलिखित जैस्मीन मॉड्यूल स्थापित करना होगा:

$ npm install jasmine-core jasmine @types/jasmine jasmine-ts --save-dev 

एक बार जब आप कि, आईडीई (जैसे WebStorm के रूप में) जैस्मीन और अपने कार्यों को पहचान लेगा जैसे वर्णन (करते हैं), यह(), और उम्मीद करें() .. तो आपको उन्हें "जैस्मीन" के साथ उपसर्ग करने की आवश्यकता नहीं है। साथ ही, आप चमेली-टी मॉड्यूल का उपयोग करके कमांड लाइन से अपनी स्पेक फ़ाइलों को चला सकते हैं। विश्व स्तर पर इन कमांड लाइन उपकरण स्थापित करें: ताकि जैस्मीन इसके विन्यास फ़ाइल पा सकते हैं

$ npm install -g jasmine jasmine-ts 

फिर "चमेली" कमांड लाइन मॉड्यूल कॉन्फ़िगर करें।तो फिर तुम और चमेली-ts को चलाने के लिए सक्षम होना चाहिए अपने कल्पना फ़ाइल कमांड लाइन से ठीक चलाना चाहिए:

./node_modules/.bin/jasmine-ts src/something.spec.ts 

.. और, आप ऐसा इसे चलाने के लिए और साथ ही अपने आईडीई कॉन्फ़िगर कर सकते हैं, और डिबग कि चलाता है रास्ता भी काम करना चाहिए (मेरे लिए काम करता है)।

इस तरह से अपने परीक्षण लेखन, आप कर्म के बिना सर्वर साइड पर एक जैस्मीन परीक्षण कल्पना चलाने के लिए, या कर्म से कोई वेब ब्राउज़र में चला सकते हैं। वही टाइपस्क्रिप्ट कोड।

0

किसी कारण यह है, ठीक से कभी नहीं उत्तर दिया गया है निश्चित रूप से चीजें बदल लेकिन कोई आधुनिक जवाब यहाँ मौजूद है के लिए, मैं गूगल के माध्यम से यहाँ आया क्योंकि मैं आलसी हूँ और मैं कभी कभी के टुकड़े गूगल।

यदि आपको इस समस्या का सामना करना पड़ता है तो सुनिश्चित करें कि आपके पास @typings/jasmine devDependency के रूप में स्थापित है और आपके tsConfig में टाइपिंग शामिल हैं उदा। अपने कल्पना फाइलों में

{ 
    "scripts": { 
    "test": "ts-node node_modules/jasmine/bin/jasmine" 
    } 
} 

:

npm install --save-dev jasmine @types/jasmine ts-node 

package.json में:

"include": ["typings/**/*.d.ts"] 
+1

'@ प्रकार/चमेली' नहीं है? –

3

यहाँ 2018 के रूप में एक ts-node ऐप्स का परीक्षण करने का सबसे अच्छा तरीका (मेरी राय में) है

import "jasmine"; 
import something from "../src/something"; 

describe("something",() => { 
    it("should work",() => { 
     expect(something.works()).toBe(true); 
    }); 
}); 

परीक्षण चलाने के लिए:

npm test 

यह ts-node और jasmine की स्थानीय स्तर पर स्थापित संस्करणों का प्रयोग करेंगे। यह विश्व स्तर पर स्थापित संस्करणों का उपयोग की तुलना में बेहतर है क्योंकि स्थानीय संस्करणों के साथ, आप यह सुनिश्चित करें कि आप सभी को समान संस्करण का उपयोग कर किया जा सकता है,।

नोट: यदि आपके पास नोड ऐप की बजाय वेब ऐप है, तो आपको शायद जैस्मीन सीएलआई के बजाय कर्म का उपयोग करके अपने परीक्षण चलाएं।

0

आप आयात के साथ कोई समस्या है तो का उपयोग tsconfig-paths

npm i ts-node tsconfig-paths types/jasmine jasmine --save-dev 

भागो टाइपप्रति सक्षम चमेली:

ts-node -r tsconfig-paths/register node_modules/jasmine/bin/jasmine.js 

सुनिश्चित करें कि आपका चमेली .ts फ़ाइलों खोजेगा:

"spec_files": [ 
    "**/*[sS]pec.ts" 
], 
"helpers": [ 
    "helpers/**/*.ts" 
], 

अपनी स्क्रिप्ट का परीक्षण करने के लिए आप भी polyfills जरूरत है अगर आप उन्हें अपनी परियोजना में उपयोग कर सकते हैं। 'पथ/यहाँ' से आयात जैस्मीन `;`: आवश्यक आयात के साथ एक सहायक फ़ाइल बनाएँ, जैसे helpers/global/polifill.ts

import 'core-js'; 
संबंधित मुद्दे