Menjalankan file uji tunggal


138

Apakah ada cara untuk menjalankan ng testsatu file alih-alih untuk seluruh rangkaian uji? Idealnya, saya ingin mendapatkan loop umpan balik sesegera mungkin ketika saya mengedit file, tetapi karmamengeksekusi seluruh rangkaian pada setiap penyimpanan, yang agak lambat ketika Anda membangun test suite yang cukup besar.


Ini berbeda dari Bagaimana menjalankan hanya satu spec tes dengan angular-cli dalam pertanyaan itu adalah tentang menjalankan spec individual. Ini tentang menjalankan file individual. Solusinya melibatkan fitur spesifikasi Jasmine yang sama, tetapi sifat pertanyaannya sedikit berbeda.



Anda dapat menemukan jawabannya di sini: stackoverflow.com/questions/40683673/…
Sahil Shikalgar

Anda dapat menemukan jawabannya di sini: stackoverflow.com/questions/40683673/…
Sahil Shikalgar

Jawaban:


262

Saya menemukan bahwa Jasmine memungkinkan Anda untuk awalan describedan itmetode dengan f(untuk fokus?). Jadi, fdescribedan fit. Jika Anda menggunakan salah satu dari ini, karma hanya akan menjalankan tes yang relevan. Jadi, untuk memfokuskan file saat ini, Anda bisa mengambil level atas describedan mengubahnya ke fdescribe. Bekerja untuk tujuan saya.


9
jawaban legendaris
danday74

2
Tidak percaya fungsi penting seperti itu tidak lebih jelas dan langsung.
Ash

10
itu berfungsi tetapi itu tidak ideal karena Anda perlu mengubah kode sumber dan Anda akhirnya dapat memeriksa kode yang dimodifikasi dalam kontrol sumber.
Marco Altieri

4
Harap tambahkan tautan ke dokumentasi resmi , jika memungkinkan
jgpATs2w

Saya sudah mencari ini, Luar Biasa
Carlos E

26

Perlu disebutkan bahwa Anda dapat menonaktifkan tes tertentu tanpa berkomentar oleh xdescribedanxit

xdescribe('Hello world', () => { 
  xit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});

Dan seperti yang sudah dikatakan seseorang jika Anda ingin fokus pada beberapa tes lalu fdescribedanfit

fdescribe('Hello world', () => { 
  fit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});

25

Ini dapat dicapai hari ini melalui includeopsi. https://angular.io/cli/test#options

Ini pertandingan glob, jadi sebagai contoh:

ng test --include='**/someFolder/*.spec.ts'

Saya tidak dapat menemukannya di catatan rilis 8.1.0 , tetapi @Swoox menyebutkan di bawah ini adalah fitur setelah versi cli 8.1.0. Terima kasih telah memikirkannya.


1
Ini sepertinya pembaruan terbaru. Mungkin ingin memasukkan versi apa yang dibutuhkan. CLI 8.1 diperlukan.
Swoox

Tampaknya akan dihapus di v9.1 :(
rmcsharry

2
Saya baru saja menguji ini di CLI v9.1.0 dan bekerja dengan sempurna.
Sajjan Singh

9

Saya menemukan bahwa ng testmemiliki opsi tambahan --includeyang dapat Anda gunakan untuk dapat menjalankan tes untuk satu file, atau untuk direktori tertentu, atau untuk banyak file:

// one file
npm run test -- --include src/app/components/component/component-name.component.spec.ts

// directory or bunch of files
npm run test -- --include src/app/components

ng cli docs


Sudut 9 - tampaknya telah dihapus
rmcsharry

Tidak, masih tersedia di NG 9.
tephyr

6

Anda dapat pergi ke src/test.tsdan dapat mengubah baris berikut:

const context = require.context('./', true, /\.spec\.ts$/);

untuk

const context = require.context('./', true, /**yourcomponent.component**\.spec\.ts$/);

masukkan deskripsi gambar di sini


1
Sebenarnya, ini terdengar seperti jawaban yang paling benar meskipun sebagian besar pertanyaan tentang bagaimana melakukan ini masalah diselesaikan dengan menggunakan fit dan deskripsi. Ada masalah git untuk mencapai ini dengan lebih mudah di Karma: github.com/karma-runner/karma/issues/1507 . Idealnya, meskipun tidak sederhana, kita dapat mengkonfigurasi Karma sehingga kita dapat membuat perubahan pada satu tes, dan kemudian klik di browser untuk menjalankannya kembali dengan pembaruan.
pumpkinthehead



0

Anda harus pergi src/test.tsdan dapat mengubah kode nomor baris berikut 18:

//Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);

untuk

//Then we find all the tests.
const context = require.context('./', true, /testing.component\.spec\.ts$/);

masukkan deskripsi gambar di sini


-3

Berfungsi jika Anda menentukan file spesifikasi Anda sebagai parameter.

Sebagai contoh:

ng test foo.spec.ts

Semoga ini membantu.


4
Bisakah Anda menentukan versi mana yang Anda gunakan? Tidak bekerja dengan 1.7.x
FrEaKmAn

4
Itu tidak bekerja seperti bagi saya juga. Tapi saya memodifikasinya untuk bekerja dengan opsi --main sebelum path ke file spec. Saya menggunakan jalur absolut dengan garis miring ke depan. Belum mencoba jalur relatif. Menggunakan Angular 6. Tidak yakin apakah itu solusi terbaik, tetapi sepertinya itu bekerja untuk saya.
user2367418
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.