<p>sinon gagal saat memulihkan properti yang terhenti di objek jendela di IE11</p>

Dibuat pada 22 Agu 2018  ·  4Komentar  ·  Sumber: sinonjs/sinon

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:

  1. sinon seharusnya menimbulkan kesalahan pada langkah rintisan (bukan pada langkah restore()) sehingga properti ini tidak dapat di-stub;
  2. ketika mematikan properti sinon tidak boleh menyalin atribut 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 :
    https://github.com/sinonjs/sinon/blob/638e104d1e6ed9908c1b09bd33d2cba1aa8c217a/lib/sinon/default-behaviors.js#L251

Konteks:

  • Versi perpustakaan: semua versi terpengaruh, diuji di 4.4.6 & 6.1.5.

Harap konfirmasi apakah itu bug atau perilaku yang diharapkan.

Bug Help wanted hacktoberfest pinned

Komentar yang paling membantu

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.

Semua 4 komentar

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

stevenmusumeche picture stevenmusumeche  ·  3Komentar

brettz9 picture brettz9  ·  3Komentar

sudhirbits picture sudhirbits  ·  4Komentar

fearphage picture fearphage  ·  3Komentar

NathanHazout picture NathanHazout  ·  3Komentar