Jelaskan bugnya
itu mungkin untuk mematikan, tetapi tidak untuk mengembalikan beberapa properti di objek jendela di IE11 menyebabkan sinon melempar kesalahan tipe: TypeError: Cannot redefine non-configurable property '...'
Untuk Mereproduksi
https://jsbin.com/qixexucasa/edit?js ,console,output - bandingkan perilaku di IE11 dan browser lainnya.
"TypeError: Cannot redefine non-configurable property 'parent'
at restore (https://unpkg.com/[email protected]/pkg/sinon.js:3253:13)
at Global code (https://null.jsbin.com/runner:18:1)"
Perilaku yang diharapkan
Di IE11, properti tertentu dari objek jendela tidak dapat dikonfigurasi, tetapi masih memungkinkan untuk mematikannya dan ini cukup berguna dalam pengujian. Perilaku yang diharapkan akan menjadi salah satu dari mereka:
configurable
, apakah ada alasan untuk ini? Jika nilai false
sinon hanya menimbulkan masalah untuk dirinya sendiri, jadi tidak mungkin untuk memulihkannya. Jadi baris ini harus selalu true
:Konteks:
Harap konfirmasi apakah itu bug atau perilaku yang diharapkan.
Terima kasih atas uraian terperinci Anda tentang masalah ini.
Akankah dengan strategi kedua benar-benar membuat ini berfungsi di IE11? Jika demikian, itu akan menjadi preferensi saya.
Apakah Anda siap untuk menyumbangkan permintaan tarik untuk membuat perubahan yang diperlukan?
Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.
Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.
Saya mengalami masalah yang sama dan saya menemukan penyebabnya di sinon/default-behaviors.js baris 258.
value: function value(fake, newVal) {
var rootStub = fake.stub || fake;
Object.defineProperty(rootStub.rootObj, rootStub.propName, {
value: newVal,
enumerable: true,
configurable: isPropertyConfigurable(rootStub.rootObj, rootStub.propName)
});
return fake;
}
Saya tidak tahu mengapa itu harus mengikuti opsi yang dapat dikonfigurasi objek asli. Saya pikir itu harus selalu benar karena Setelah dimatikan, itu dapat dipulihkan atau ditulis ulang (biasanya sinon.restore()) terlepas dari opsi objek asli.
Untuk sementara saya memperbaiki masalah ini dengan mengubah kode itu selalu mengembalikan true.
Komentar yang paling membantu
Saya mengalami masalah yang sama dan saya menemukan penyebabnya di sinon/default-behaviors.js baris 258.
Saya tidak tahu mengapa itu harus mengikuti opsi yang dapat dikonfigurasi objek asli. Saya pikir itu harus selalu benar karena Setelah dimatikan, itu dapat dipulihkan atau ditulis ulang (biasanya sinon.restore()) terlepas dari opsi objek asli.
Untuk sementara saya memperbaiki masalah ini dengan mengubah kode itu selalu mengembalikan true.