Saya mulai berpikir ini tidak mungkin, tetapi saya tetap ingin bertanya.
Saya ingin menguji bahwa salah satu modul ES6 saya memanggil modul ES6 lain dengan cara tertentu. Dengan Jasmine ini sangat mudah -
Kode aplikasi:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
Dan kode tes:
//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';
describe('myModule', () => {
it('calls the dependency with double the input', () => {
spyOn(dependency, 'doSomething');
myModule(2);
expect(dependency.doSomething).toHaveBeenCalledWith(4);
});
});
Apa yang setara dengan Jest? Aku merasa ini hal yang sangat sederhana untuk dilakukan, tapi aku sudah mencabuti rambutku untuk mencari tahu.
Yang paling dekat saya datang adalah dengan mengganti import
s dengan require
s, dan memindahkannya di dalam tes / fungsi. Tak satu pun dari hal-hal itu yang ingin saya lakukan.
// myModule.js
export default (x) => {
const dependency = require('./dependency'); // yuck
dependency.doSomething(x * 2);
}
//myModule-test.js
describe('myModule', () => {
it('calls the dependency with double the input', () => {
jest.mock('../dependency');
myModule(2);
const dependency = require('../dependency'); // also yuck
expect(dependency.doSomething).toBeCalledWith(4);
});
});
Untuk poin bonus, saya ingin semuanya berfungsi ketika fungsi di dalamnya dependency.js
adalah ekspor default. Namun, saya tahu bahwa memata-matai ekspor default tidak berfungsi di Jasmine (atau setidaknya saya tidak pernah bisa membuatnya berfungsi), jadi saya tidak mengulurkan harapan bahwa itu mungkin di Jest juga.
import
s kerequire
s untuk saat ini. terimakasih untuk pemberitahuannya.