typescript - Angular CLI tarafından oluşturulan “spec.ts” dosyaları ne içindir?


Projeleri oluşturmak ve sunmak için Angular CLI kullanıyorum. Görünüşe göre iyi çalışıyor - ama benim küçük öğrenme projelerim için ihtiyacım olandan daha fazlasını üretiyor - ama bu beklenen bir şey.

Bir projedeki her Angular öğesi (Component, Service, Pipe vb.) için spec.ts dosyası oluşturduğunu fark ettim. Araştırdım ama bu dosyaların ne amaçla kullanıldığına dair bir açıklama bulamadım.

Bunlar normalde tsc kullanırken gizli olan yapı dosyaları mı? Merak ettim çünkü oluşturduğum kötü adlandırılmış bir Component'in adını değiştirmek istemiştim ve bu adın bu spec.ts dosyalarında da geçerli olduğunu fark ettim.


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 {
}

Cevap #1

Spec dosyaları, kaynak dosyalarınız için birim testleridir. Angular uygulamaları için konvansiyon, her .ts dosyası için bir .spec.ts dosyasına sahip olmaktır. Bunlar, ng test komutunu kullandığınızda, Karma test çalıştırıcısı aracılığıyla Jasmine JavaScript test çerçevesi ile çalıştırılır (https://karma-runner.github.io/).

Bunu biraz daha fazla okumak için kullanabilirsiniz:

https://angular.io/guide/testing

Cevap #2

Eğer "ng new" kullanarak yeni bir Angular projesi oluşturursanız, spec.ts dosyalarının oluşturulmasını atlayabilirsiniz. Bunun için --skip-tests seçeneğini kullanmalısınız.

ng new ng-app-name --skip-tests

İlgili makaleler