Sinon: `sinon.resetHistory ()` tidak menyetel ulang riwayat

Dibuat pada 8 Mei 2019  ·  11Komentar  ·  Sumber: sinonjs/sinon

Per dokumen :

_Sejak [email protected]_
Anda dapat mengatur ulang riwayat semua rintisan menggunakan sinon.resetHistory ()

Untuk Mereproduksi

const assert = require('chai').assert;
const sinon = require('sinon');

describe('resetHistory', function() {
  var num = null;


  beforeEach(function() {
    num = sinon.createStubInstance(Number);
  });
  afterEach(() => {
    // Restore the default sandbox here
    sinon.restore();
  });

  describe('called on individual stub method', function() {
    it('should clear "called" status on stub', function() {
      num.toFixed();
      assert.isTrue(num.toFixed.called);
      num.toFixed.resetHistory();
      assert.isFalse(num.toFixed.called);
    });
  });

  describe('called on module', function() {
    it('should clear "called" status on all stubs', function() {
      num.toFixed();
      assert.isTrue(num.toFixed.called);
      sinon.resetHistory();
      assert.isFalse(num.toFixed.called);
    });
  });
});

Demo RunKit

Hasil nyata

Tes kedua gagal:
"" memanggil modul: harus menghapus status \ "dipanggil \" pada semua rintisan: ❌. [assert.isFalse] Diharapkan benar menjadi salah ""

Hasil yang diharapkan

Semua tes lulus

Bug Medium Help wanted

Semua 11 komentar

Saya memperbarui masalah dengan konten file zip dan juga menambahkannya sebagai demo RunKit yang dapat dijalankan, menyatakan bahwa itu berfungsi.

Saya ingin membantu dalam memperbaiki bug

@rpgeeganage Harap lakukan! Berikut adalah panduan memulai kami

Saya menyadari komentar ini lebih merupakan permintaan fitur, tetapi alangkah baiknya jika objek "stub instance" memiliki metode resetHistory() (dan resetBehavior() dan reset() ) sendiri, tanpa perlu masuk ke seluruh kotak pasir.

@mcow Sudahkah Anda mencoba? 😄 Rintisan telah memiliki fitur tersebut sejak Sinon versi 2 . Penambahan sandbox jauh lebih baru.

@bayu_joo ,
Terima kasih banyak. Saya akan mengerjakan ini.

@ fatso83 Metode rintisan memiliki fitur itu. Objek "Stub instance" , hasil dari panggilan createStubInstance() (yang terminologi jeleknya adalah sinon, jangan salahkan saya untuk miskomunikasi) tidak.

@bayu_joo ,
Saya telah melihat implementasi sinon.resetHistory dan sinon.createStubInstance .
Yang saya perhatikan adalah, sinon.createStubInstance tidak menggunakan implementasi dari sandbox tetapi sinon.resetHistory menggunakan implementasi dari sandbox . Di sinon.resetHistory collection selalu kosong. Saya akan menggali lebih dalam.

@mcow Aha, itu menjelaskan banyak hal. Saya tidak memperhatikan bit _instance_ :) Semoga pembahasan mendalam

@ fatso83 , haruskah masalah ini ditutup karena perubahannya digabungkan menjadi master?

TG untuk pengamat yang cerdik 😄

Apakah halaman ini membantu?
0 / 5 - 0 peringkat