Tôi bắt đầu nghĩ rằng điều này là không thể, nhưng dù sao tôi cũng muốn hỏi.
Tôi muốn kiểm tra rằng một trong các mô-đun ES6 của tôi gọi một mô-đun ES6 khác theo một cách cụ thể. Với Jasmine thì điều này siêu dễ -
Mã ứng dụng:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
Và mã kiểm tra:
//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);
});
});
Tương đương với Jest là gì? Tôi cảm thấy như đây là một điều đơn giản muốn làm, nhưng tôi đã xé tóc ra để cố gắng tìm ra nó.
Lần gần nhất tôi đến là bằng cách thay thế import
s bằng require
s và di chuyển chúng vào bên trong các bài kiểm tra / chức năng. Không phải trong số đó là những điều tôi muốn làm.
// 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);
});
});
Đối với điểm thưởng, tôi muốn làm cho toàn bộ hoạt động khi chức năng bên trong dependency.js
là xuất mặc định. Tuy nhiên, tôi biết rằng gián điệp xuất khẩu mặc định không hoạt động ở Jasmine (hoặc ít nhất là tôi không bao giờ có thể làm cho nó hoạt động), vì vậy tôi cũng không hy vọng rằng điều đó cũng có thể xảy ra với Jest.
import
sangrequire
s cho đến bây giờ. Cảm ơn cho những người đứng đầu mặc dù.