Jest: fungsi spyOn

Dibuat pada 20 Sep 2016  ·  3Komentar  ·  Sumber: facebook/jest

Saya mencoba mencari cara pendekatan terbaik mengikuti use case dengan bercanda.

Saya tidak ingin mengolok-olok fungsi, cukup memata-matai dan biarkan implementasi asli bekerja. Katakanlah saya ingin melacak berapa kali kueri dipanggil pada driver postgres. Pendekatan berikut berfungsi:

const querySpy = pg.Client.prototype.query = jest.fn(pg.Client.prototype.query);
expect(querySpy.mock.calls.length).toBe(2)

Masalahnya adalah saya juga harus menetapkan implementasi asli di akhir pengujian sehingga tidak memengaruhi orang lain di file yang sama. Jadi mudah untuk memecahkan isolasi tes jika satu orang lupa membersihkannya.

Saya juga memperhatikan bahwa melati memiliki spyOn yang tampaknya juga berfungsi dengan baik (tetapi tidak didokumentasikan), yang cukup elegan, jadi hal yang sama dapat dicapai dengan:

const querySpy = spyOn(pg.Client.prototype, 'query').and.callThrough();
expect(querySpy.calls.count()).toEqual(3);

Dan melati mengklaim untuk menghapus mata-mata setelah tes secara otomatis, yang luar biasa.

Tapi tidak yakin apakah itu sesuatu yang akan menjadi bagian resmi dari lelucon? Masalahnya adalah mata-mata melati memiliki antarmuka yang berbeda dari olok-olok dalam lelucon. Jadi saya pikir yang terbaik adalah memperluas fungsionalitas tiruan sehingga dapat dengan mudah digunakan untuk memata-matai menggunakan spyOn atau yang serupa.

Setiap umpan balik disambut.

Komentar yang paling membantu

Mungkin salah tentang ini tetapi bukankah expect.spyOn berbeda dengan melati spyOn karena tidak melakukan 'pemulihan otomatis' yang diklaim di akhir pengujian? Saya pikir fitur ini cukup rapi dan membersihkan file spesifikasi. Apakah akan ada rencana untuk menambahkan fungsi semacam ini saat mengintegrasikan #1679?

Semua 3 komentar

Ini dilacak sebagai bagian dari #1679.

Mungkin salah tentang ini tetapi bukankah expect.spyOn berbeda dengan melati spyOn karena tidak melakukan 'pemulihan otomatis' yang diklaim di akhir pengujian? Saya pikir fitur ini cukup rapi dan membersihkan file spesifikasi. Apakah akan ada rencana untuk menambahkan fungsi semacam ini saat mengintegrasikan #1679?

Lihat juga #2534.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat