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 imports ile değiştirmek requireve 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.jsvarsayı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.
imports'ye aktarmaya devam etmem umrumda değilrequire. Yine de dikkatleri için teşekkürler.