Sinon: Dokumentasi untuk memata-matai dan mematikan Getter / Setter

Dibuat pada 2 Nov 2017  ·  10Komentar  ·  Sumber: sinonjs/sinon

Hai semua,

Apakah saat ini ada dokumentasi di mana pun tentang cara menggunakan fitur mata-mata pengambil dan penyetel yang diuraikan di # 1205? Jika tidak, saya dapat membaca kode dan tes dan menambahkannya jika diperlukan. Saya mencari cukup keras dan tidak melihatnya di mana pun saya pikir saya akan bertanya. Terima kasih.

Documentation Help wanted Property accessors pinned

Komentar yang paling membantu

Ini telah diterapkan dan saya menggunakannya. Saya menemukan caranya dengan melihat melalui tes di # 1205. Saya menemukan tesnya di sini .

Ini dilakukan seperti ini:

spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])

Haruskah ini ada di dokumen? Atau apakah penerapan itu bahkan bukan hal yang diketahui pada saat ini?

Semua 10 komentar

Apakah ini yang Anda cari?

Saya juga melihat ini tertulis, tetapi tampaknya ketinggalan jaman (dulu benar):

Jika Anda perlu menghentikan getter / setter atau properti non-fungsi, maka Anda harus menggunakan sandbox.stub

Rintisan normal dapat digunakan untuk itu sekarang.

Untuk rintisan yang terlihat seperti itu. Saya tidak tahu apakah ada apa pun di dokumen mata-mata untuk mereka.

Hmm ... Saya tidak benar-benar berpikir spionase telah diterapkan untuk getter / setter. Aku juga tidak tahu kenapa. Implementasinya pada dasarnya hanya seperti ini:

fn=Object.getOwnPropertyDescriptor(obj, prop).get
spy=sinon.spy(fn);
Object.defineProperty(obj, prop, { get: spy })

Mau mencobanya?

Ini telah diterapkan dan saya menggunakannya. Saya menemukan caranya dengan melihat melalui tes di # 1205. Saya menemukan tesnya di sini .

Ini dilakukan seperti ini:

spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])

Haruskah ini ada di dokumen? Atau apakah penerapan itu bahkan bukan hal yang diketahui pada saat ini?

Akan sangat bagus untuk didokumentasikan, terima kasih!

Yang pasti, saya akan menjatuhkannya.

Masalah ini secara otomatis ditandai sebagai usang karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut. Terima kasih atas kontribusi Anda.

Apakah ada cara untuk memata-matai tanpa kelas (Langsung berdasarkan objek)?
Saya hanya memiliki objek di sana dalam spesifikasi dan tidak dapat meminta kelas penyetel pengambil apakah ada cara lain juga?

@ mouse9 Tidak jelas apa yang Anda tanyakan, dan bagaimana kaitannya dengan penghentian / mata-mata pada getter. Saya juga tidak mengerti apa yang Anda maksud dengan kelas. Kelas tidak memiliki arti sebenarnya dalam javascript dan dalam kebanyakan hal apa yang Anda anggap sebagai kelas tidak lebih dari objek.

Bagaimanapun, kami mencoba untuk menjaga daftar masalah GitHub tetap rapi dan fokus pada bug dan diskusi fitur. Tiket ini terlihat seperti pertanyaan penggunaan; kirimkan ke StackOverflow dan beri tag dengan sinon , sehingga komunitas yang lebih besar dapat membantu menjawab pertanyaan Anda.

Jika Anda merasa bahwa topik Anda adalah masalah dengan Sinon, buka tiket baru dan ikuti panduan untuk melaporkan masalah .

Untuk kode @loganhuskins :
spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])

Menemukan bahwa, dalam penegasan, perlu menegaskan pada spy.get seperti:
sinon.assert.calledOnce(spy.get);

Sebelumnya dinyatakan hanya sebagai mata-mata , dan tidak berhasil.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat