Pertanyaan Beberapa tes Anda melakukan reload halaman penuh - kesalahan saat menjalankan tes Jasmine


Saya mengalami masalah ketika saya menjalankan tes saya di Jasmine, saya mendapatkan kesalahan ini di bawah. Masalahnya, tampaknya itu terjadi ketika saya mencoba melakukan sejumlah tes. Sepertinya tidak terikat pada tes tertentu, seolah-olah saya mengomentari beberapa, lulus tes. Jika saya menghapus beberapa tes, kesalahan akan muncul. Jika saya mengomentari orang-orang yang tidak berkomentar sebelumnya, mereka semua lulus lagi. (Yaitu jika saya memiliki tes merah, hijau, biru dan oranye dan gagal, saya komentar oranye dan biru itu berlalu, maka saya komentar biru dan oranye itu gagal lagi, tetapi jika saya berkomentar merah dan hijau itu berlalu lagi).

Chrome 41.0.2272 (Mac OS X 10.10.1) ERROR Beberapa tes Anda melakukan a   pemuatan ulang halaman penuh! Chrome 41.0.2272 (Mac OS X 10.10.1): Dieksekusi 16 dari   29 (1 FAILED) ERROR (0,108 detik / 0,092 detik)

Saya bingung tentang apa yang sedang terjadi. Semakin banyak tes yang saya tambahkan, saat itulah ini menjadi masalah. Apakah ada yang mengalami ini sebelumnya? Saya tidak tahu apa yang menyebabkannya, karena tidak ada satu pun tes saya yang melakukan pengalihan apa pun, dan semuanya berjalan secara universal di komputer orang lain.


32
2018-03-30 17:33


asal


Jawaban:


Dalam kasus saya masalahnya adalah bahwa dalam kode sumber saya, saya memiliki kode langsung pengaturan href pada lokasi objek, seperti window.location.href = 'somewhere';

Dalam spesifikasi saya, saya mengatur a onbeforeunload listener yang hanya mengembalikan string alih-alih membiarkan redirect berlangsung:

beforeAll(() => {
  window.onbeforeunload = () => 'Oh no!';
});

16
2018-05-20 14:01



Pastikan bahwa tes Anda benar mengisolasi semua modul yang diuji dengan pengandaian / mata-mata. Perilaku yang Anda lihat mengatakan kepada saya bahwa pengujian Anda tidak benar-benar berjalan dalam isolasi - mereka mengubah beberapa keadaan di suatu tempat yang akan memicu pemuatan ulang.


14
2018-05-26 14:23



Saya kira Anda gunakan window.location di suatu tempat di kode yang Anda targetkan. Untuk lulus hanya membuat mata-mata untuk window.onbeforeunload

Contoh:

window.onbeforeunload = jasmine.createSpy();

Atau bahkan lebih baik digunakan $window sebaliknya, dan ini tidak akan terjadi.


5
2018-02-01 19:53



Saya baru saja mengalami kesalahan ini dengan Karma 0.13.12. Saya meningkatkan ke Karma 0.13.14 dan tes saya berfungsi kembali. Masalah bagi saya (dan mungkin juga untuk @mqklin) terkait https://github.com/karma-runner/karma/issues/1656 dan https://github.com/jasmine/jasmine/issues/945.


2
2017-11-02 22:54



Cobalah untuk mengurangi jumlah describe bagian atau benar-benar menghapusnya. Saya tidak tahu mengapa, tetapi itu berhasil bagi saya.


2
2017-08-28 11:59



Apa yang berhasil bagi saya adalah mengupgrade Karma dari 1.4.0 ke 1.4.1 dan mengubah maksimumSpecCallbackDepth di file jasmine.js saya dari 20 ke 100.


2
2018-01-30 23:06



Anda juga perlu memastikan bahwa modul tidak dimuat dua kali. Dalam kasus saya, saya memiliki file modul AngularJS -e.g., auth.controller.js yang isinya sudah dibundel dalam core.js mengajukan. Setelah saya mengecualikan file yang dibundel di karma, kesalahan itu hilang.


0
2018-01-28 15:32



Saya menggunakan setTimeout(() => window.location.replace('/'), 10); Saya menggunakan kode di bawah ini dalam pengujian unit saya dan itu berhasil bagi saya.

spyOn(global, 'setTimeout');

0
2017-07-12 11:04



membuat mata-mata pada fungsi yang memiliki window.location / ulang tetap masalah untuk saya


0
2017-07-26 15:28