Angular CLi द्वारा उत्पन्न "spec.ts" फाइलें क्या हैं?


210

मैं Angular 2 (और सामान्य रूप से Angular ...) में नया हूँ और मुझे यह बहुत ही आकर्षक लग रहा है। मैं प्रोजेक्ट बनाने और सेवा करने के लिए कोणीय सीएलआई का उपयोग कर रहा हूं । यह अच्छी तरह से काम करने लगता है - हालांकि मेरी छोटी सीखने की परियोजनाओं के लिए, यह मेरी आवश्यकता से अधिक उत्पादन करता है - लेकिन यह उम्मीद की जानी चाहिए।

मैंने देखा है कि यह spec.tsएक परियोजना (घटक, सेवा, पाइप, आदि) में प्रत्येक कोणीय तत्व के लिए उत्पन्न करता है । मैंने चारों ओर खोज की है, लेकिन इन फ़ाइलों के लिए क्या है इसका स्पष्टीकरण नहीं मिला है।

क्या ये बिल्ड फाइलें हैं जो सामान्य रूप से उपयोग करते समय छिपाई जाती हैं tsc? मुझे आश्चर्य हुआ क्योंकि मैं एक खराब नाम का नाम बदलना चाहता था जिसे Componentमैंने बनाया था और यह पाया कि इन spec.tsफाइलों में नाम का भी उल्लेख किया गया था ।


import {
  beforeEach,
  beforeEachProviders,
  describe,
  expect,
  it,
  inject,
} from '@angular/core/testing';
import { ComponentFixture, TestComponentBuilder } from '@angular/compiler/testing';
import { Component } from '@angular/core';
import { By } from '@angular/platform-browser';
import { PovLevelComponent } from './pov-level.component';

describe('Component: PovLevel', () => {
  let builder: TestComponentBuilder;

  beforeEachProviders(() => [PovLevelComponent]);
  beforeEach(inject([TestComponentBuilder], function (tcb: TestComponentBuilder) {
    builder = tcb;
  }));

  it('should inject the component', inject([PovLevelComponent],
      (component: PovLevelComponent) => {
    expect(component).toBeTruthy();
  }));

  it('should create the component', inject([], () => {
    return builder.createAsync(PovLevelComponentTestController)
      .then((fixture: ComponentFixture<any>) => {
        let query = fixture.debugElement.query(By.directive(PovLevelComponent));
        expect(query).toBeTruthy();
        expect(query.componentInstance).toBeTruthy();
      });
  }));
});

@Component({
  selector: 'test',
  template: `
    <app-pov-level></app-pov-level>
  `,
  directives: [PovLevelComponent]
})
class PovLevelComponentTestController {
}

जवाबों:


265

युक्ति फ़ाइलें आपके स्रोत फ़ाइलों के लिए इकाई परीक्षण हैं। कोणीय अनुप्रयोगों के लिए कन्वेंशन प्रत्येक .ts फ़ाइल के लिए एक .spec.ts फ़ाइल है। जब आप कमांड का उपयोग करते हैं, तो वे कर्मा टेस्ट धावक ( https://karma-runner.github.io/ ) के माध्यम से जैस्मीन जावास्क्रिप्ट परीक्षण ढांचे का उपयोग करके चलाए जाते हैं ng test

आप इसे आगे पढ़ने के लिए उपयोग कर सकते हैं:

https://angular.io/guide/testing


17
धन्यवाद, मैं खुद यह सोच रहा था। मान लीजिए कि मैं कोई परीक्षण नहीं चलाना चाहता, क्या मैं .spec फ़ाइलों को सुरक्षित रूप से हटा सकता हूं? (और भी परीक्षण फ़ोल्डर और फ़ाइलें जैसे e2e फ़ोल्डर?)
कोककोडो

7
मुझे यह भी लगता है कि इस प्रश्न के लिए थोड़ा और उत्तर देने की आवश्यकता है। क्या हम इन फाइलों को पूरी तरह से अनदेखा कर सकते हैं और सिर्फ अपने काम के बारे में बता सकते हैं?
मेटुस मिगला

18
के रूप में awiseman राज्यों, कल्पना फ़ाइलें वास्तव में आप आवेदन के परीक्षण के लिए कर रहे हैं। यदि आप परीक्षण फ़ाइलों का उपयोग नहीं करना चाहते हैं, तो आप उन्हें केवल हटा सकते हैं या अनदेखा कर सकते हैं। आपका प्रोजेक्ट बिना ऐनक फाइल्स के काम करता रहेगा।
dennismuijs

33
जब आप सीएलआई के साथ एक नया घटक उत्पन्न करते हैं तो आप --spec=falseकल्पना फ़ाइल की पीढ़ी को बाहर करने के लिए जोड़ सकते हैं । एक नया घटक बनाने के लिए पूर्ण आदेश होगा ng g component comp-name --spec=false:। यहाँ अधिक जानकारी: github.com/angular/angular-cli/wiki/generate-component
डीन

11
इसे इस angular-cli.jsonतरह संशोधित करके अक्षम किया जा सकता है :{ "defaults": { "component": { "spec": false } } }
अली शेरेफात

20

यदि आप "एनजी नए" का उपयोग करके नई कोणीय परियोजना उत्पन्न करते हैं, तो आप कल्पना की एक फ़ाइल छोड़ सकते हैं। इसके लिए आपको --स्काइप-टेस्ट विकल्प पर आवेदन करना चाहिए।

एनजी नए एनजी-ऐप-नाम --स्किप-परीक्षण


1
क्या आप प्रोजेक्ट तैयार होने के बाद इस विकल्प को सेट कर सकते हैं?
ह्यूगहुइट टोटल

2

.Spec.ts फाइलें व्यक्तिगत घटकों के लिए यूनिट परीक्षणों के लिए होती हैं। आप कर्मा कार्य धावक के माध्यम से चला सकते हैं ng test। विशेष घटकों को चलाने के लिए यूनिट टेस्ट मामलों के कोड कवरेज को देखने के लिएng test --code-coverage


0

.spec.tsफ़ाइल unit testingआपके एप्लिकेशन के लिए उपयोग की जाती है।

यदि आप इसे प्राप्त नहीं करते हैं तो --spec=falseनया बनाते समय इसका उपयोग करें Component। ऐशे ही

ng generate component --spec=false mycomponentName
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.