Bunun mümkün olmadığını düşünmeye başladım, ama yine de sormak istiyorum.
ES6 modüllerimden birinin belirli bir şekilde başka bir ES6 modülünü çağırdığını test etmek istiyorum. Yasemin ile bu çok kolay -
Uygulama kodu:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
Ve test kodu:
//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);
});
});
Jest ile eşdeğer olan nedir? Bunun yapmak için çok basit bir şey olduğunu hissediyorum, ama saçımı anlamaya çalışırken yırtıyorum.
En yakın geldiğim s'leri import
s ile değiştirmek require
ve onları testlerin / fonksiyonların içinde hareket ettirmektir. İkisi de yapmak istediğim şeyler değil.
// 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);
});
});
Bonus puanlar için, içindeki işlev dependency.js
varsayılan bir dışa aktarma olduğunda her şeyin çalışmasını isterim . Ancak, varsayılan ihracatta casusluğun Yasemin'de işe yaramadığını biliyorum (ya da en azından işe yarayamadım), bu yüzden Jest'te de mümkün olduğunu ummuyorum.
import
s'ye aktarmaya devam etmem umrumda değilrequire
. Yine de dikkatleri için teşekkürler.