Protractor: Mendukung penambahan modul tiruan ke aplikasi Angular 2

Dibuat pada 6 Apr 2016  ·  31Komentar  ·  Sumber: angular/protractor

Saat ini tidak mungkin untuk menambahkan modul tiruan untuk aplikasi Angular 2.

Masalah ini mencerminkan TODO yang diposting di sini .

Dan, untuk referensi silang pos SO yang relevan: http://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request .

Terima kasih.

user experience feature request

Komentar yang paling membantu

@ jlin412 ya, pada akhirnya, tetapi itu akan membutuhkan penyelidikan dan pemikiran yang cermat tentang cara kerjanya baik di aot maupun non-aot. Jika Anda menggunakan hybrid itu akan terus bekerja untuk bit ng1.

Semua orang - harap gunakan respons emoji github untuk masalah +1. Menambahkan komentar membuat sulit untuk mengurai kemajuan nyata. Saya akan menghapus komentar ini agar dapat dibaca. Terima kasih!

Semua 31 komentar

@juliemr apakah kami berencana untuk mendukung tiruan untuk sudut 2? Jika ya kapan? Jika kita menggunakan mode hybrid, akankah mock terus bekerja untuk saat ini?

@ jlin412 ya, pada akhirnya, tetapi itu akan membutuhkan penyelidikan dan pemikiran yang cermat tentang cara kerjanya baik di aot maupun non-aot. Jika Anda menggunakan hybrid itu akan terus bekerja untuk bit ng1.

Semua orang - harap gunakan respons emoji github untuk masalah +1. Menambahkan komentar membuat sulit untuk mengurai kemajuan nyata. Saya akan menghapus komentar ini agar dapat dibaca. Terima kasih!

@juliemr Apakah kita memiliki ETA pada implementasi tiruan untuk sudut 2?
Juga, apakah ada alternatif yang bisa kita gunakan untuk sementara?

DARI: http://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request.

Hal yang sama berlaku untuk paket http-backend-proxy dan httpbackend.

Oleh karena itu, saya membuat lingkungan pengujian E2E menggunakan docker-compose, tetapi saya merasa implementasinya berlebihan.

Apakah Anda saat ini memiliki praktik terbaik?

Saya mengalami masalah yang sama karena mengejek panggilan backend saya. Saat kami menggunakan connect middleware untuk menjalankan aplikasi kami, saya membuat sebuah plugin yang memungkinkan Anda untuk mengejek permintaan http sudut 1 dan 2 Anda.

https://mdasberg.github.io/ng-apimock/

mungkin Anda bisa menggunakannya.

Saya tidak yakin mesin yang digunakan untuk melakukan ini, tetapi saya pikir pendekatan naif untuk menginstal modul tiruan adalah sebagai berikut:

Busur derajat entah bagaimana akan menimpa kedua metode ini:

  • platformBrowserDynamic().bootstrapModule
  • platformBrowser().bootstrapModuleFactory

Sebagai gantinya akan menjadi pembungkus sederhana yang membangun ngModule baru dan menyediakan modul yang ingin kita tiru (di bawah ini adalah kode semu dari apa yang akan terlihat):

function bootstrapModuleOverride (moduleToBootstrap) {
  @NgModule({
    imports: [moduleToBootstrap],
    provide: ArrayOfMockModules,
    bootstrap: moduleToBootstrap.bootstrap
  })
  class moduleToBoostrapWrapper {}

  platformBrowserDynamic().bootstrapModule(moduleToBoostrapWrapper);
}

Adakah ide jika ada rilis yang direncanakan untuk fitur ini?

+1 untuk fitur ini. Kami membutuhkan tiruan dalam tes e2e di aplikasi Angular 2+!

Angular 2+ sedang berkembang, jadi fitur ini menjadi sangat mendesak :)

Ya sangat penting untuk alur kerja kami saat ini.

Kami sudah berada di angular5 dan masih tidak dapat meniru http dalam spesifikasi e2e

( @tauil dunia kecil, ya?)

Berikut adalah penggunaan umum yang saya perlukan addMockModule untuk .

1) menyuntikkan pencegat kustom.
https://angular.io/guide/http#writing -an-interceptor
contoh menangkap aktivitas http dan menulis ke disk menggunakan busur derajat jika tes gagal.

2) mengesampingkan fungsionalitas dalam layanan secara normal untuk mengejek layanan data pihak ketiga .

      .decorator(
          'xyzService',
          [
            '$q', '$delegate',
            ($q, $delegate) => {
              $delegate.isEnabled = () => true;
              return $delegate;
            }
            $delegate.getProfileDetail = () =>
                  $q.when({name: 'Tester 001', title: 'E2E Tester'});
          ])

Untuk layanan khusus: kami dapat mengikuti pendekatan template httpclient. Menerapkan (1) berpotensi menyelesaikan ini juga.

3) untuk akses ke objek halaman individual internal (meskipun tidak halal)
ng.probe($0)._debugInfo
skrip eksekusi busur derajat

Kapan akan dilaksanakan?

Benar-benar bisa melakukannya dengan ini!

Ini fitur yang harus dimiliki, bagaimana bisa berumur dua tahun?!

Sebagai solusi, Anda dapat menggunakan jswiremock untuk mematikan panggilan back end. Saya telah menulis beberapa instruksi di sini: https://Gist.github.com/jamescookie/f7b854226ca1e133d1b7b2798095b7f4

Alternatif lain adalah nock .
Ini adalah perpustakaan universal untuk mengejek permintaan HTTP, tidak bergantung pada kerangka kerja apa pun.

Anda dapat menggunakan ng-apimock yang sudah ada di situs busur derajat. Ada posting blog yang bagus tentang itu di sini

Anda dapat menggunakannya untuk aplikasi AngularJs dan Angular

Fitur ini cukup penting sehingga saya pikir itu harus menjadi bagian dari inti busur derajat, bahkan jika ng-apimock baru saja dimasukkan ke dalam perpustakaan inti busur derajat.

Coba acungkan jempol sebanyak-banyaknya, bagaimana perkembangan fitur ini? Ini adalah pemblokir berat saat ini.

Serius, apakah busur derajat baru saja ditinggalkan untuk Angular?

Jadi ini sebagian bisa dilakukan tanpa perubahan pada busur derajat atau sudut hari ini. Anda dapat membuat konfigurasi "tiruan" ke ng serve yang akan menyajikan set modul yang berbeda. Ini akan memungkinkan Anda untuk melakukan pengujian backend tanpa perlu menjalankan dan menjalankan server dependen dan menghindari keharusan mengimplementasikan mocking pada lapisan HTTP. Saya telah membuat contoh repositori yang menunjukkan ini di sini: https://github.com/westonpace/angular-example-mock-services

Saya juga menguraikan langkah-langkah yang diperlukan dalam jawaban saya untuk pertanyaan SO di sini: https://stackoverflow.com/questions/39942118/how-to-inject-different-service-based-on-certain-build-environment-in-angular2 /51772549#51772549

Ini tidak semudah/dapat disesuaikan seperti di Angular 1 (misalnya Anda tidak dapat menambahkan layanan tiruan yang berbeda untuk pengujian yang berbeda) tetapi setelah perancah aktif dan berjalan, menambahkan dan menghapus layanan tiruan seharusnya cukup mudah.

Ringkasan cara cepat - bersih - tanpa perpustakaan untuk menangani ini di sini:

https://stackoverflow.com/questions/36354233/protractor-mocking-backend-with-angular2-on-api-request/51834607#51834607

Apakah ada pembaruan tentang ini? @ jlin412 Anda mengatakan bahwa itu akan membutuhkan penyelidikan dan pemikiran yang cermat - sudahkah Anda memulai ini?

Apakah ada pembaruan tentang ini? @ jlin412 Anda mengatakan bahwa itu akan membutuhkan penyelidikan dan pemikiran yang cermat - sudahkah Anda memulai ini?

@katiesandford , saya percaya pendekatan yang dirinci di sini akan mengakomodasi sebagian besar situasi pengujian dalam pengaturan ini. Jika tidak, saya ingin tahu apa itu outlier sehingga saya bisa memikirkannya untuk situasi masa depan

@gabrieldoty Dengan pendekatan ini, Anda dapat mengejek di tingkat layanan tetapi tidak di tingkat http jika saya mengerti dengan baik.
Selain itu, dalam pendekatan pengembangan yang didorong oleh perilaku, Anda ingin tiruan Anda menjadi dinamis. Langkah-langkah pengujian yang berbeda akan mengatur tiruan yang berbeda. Ini tampaknya sulit dicapai dengan pengaturan ini.

@gaeljw poin bagus! Saya dapat melihat beberapa cara yang agak kikuk untuk menangani ejekan dinamis, tetapi tidak diragukan lagi solusi dinamis akan lebih disukai!

Aplikasi saya hanya menggunakan satu kelas layanan data untuk menangani semua permintaan HTTP, jadi cukup mudah untuk menukar satu layanan itu. Tapi itu hampir tidak universal seperti tiruan http yang sebenarnya..

Terima kasih atas pemikiran itu!

ada berita tentang ini? Sepertinya pengembangan Busur Derajat tidak lagi aktif ...

ada pembaruan?

Modul mengejek akan membantu mengatasi #4300

Wow, tiket ini hampir 4 tahun sekarang! Apakah ada pembaruan?

Ada berita?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat