Sinon: Metode mematikan dalam file yang sama tidak berfungsi

Dibuat pada 5 Okt 2016  ·  3Komentar  ·  Sumber: sinonjs/sinon

Saya mencoba menguji unit suatu fungsi dalam file sambil mematikan fungsi lain dalam file SAMA, tetapi tiruan tidak diterapkan dan metode sebenarnya dipanggil. Berikut ini contohnya:

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}

Dan tes saya:

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()

Semua 3 komentar

Pikirkan bagaimana tampilannya di ES5 standar. Setiap fungsi diekspor dengan nama tertentu pada objek ekspor, tetapi juga dapat direferensikan secara internal menggunakan nama fungsi. Kita berbicara tentang dua referensi yang berbeda. Saat mematikan Anda mengubah referensi eksternal. Referensi internal tetap sama. Anda tidak dapat mengubahnya, kecuali jika Anda membuat injektor ketergantungan eksplisit (seperti fungsi setter untuk penggunaan internal). Ini bukan bug, tetapi fitur JavaScript.

apakah ada solusi tentang ini??? Ini cukup umum untuk masuk ke masalah seperti ini ketika menguji file nodejs.

Ini tercakup dalam dokumentasi kami, di bagian cara:
http://sinonjs.org/how-to/link-seams-commonjs/

Apakah halaman ini membantu?
0 / 5 - 0 peringkat