![](/img/trans.png)
[英]Cannot assign functions to "onclick" from imported class without anonymous function?
[英]Cannot spy on a class functions that is imported
import startUp from 'startup';
import classA from '...';
import classB from '...';
startUp.ready.then(classA.initialise(), classB.initialise());
我的測試用例:
it('invokes its initialisation function during the import of ./initialiser', () => {
jest.spyOn(classA, 'initialise').mockImplementation(() => {});
jest.spyOn(classB, 'initialise').mockImplementation(() => {});
// Some more test cases
expect(classA.initialise).toHaveBeenCalledWith();
expect(classA.initialise).toHaveBeenCalledWith();
});
運行測試用例它試圖測試 classA 和 classB 的初始化函數,因此拋出錯誤。
因為classA
和classB
的initialise
方法是在模塊導入的時候立即執行的,所以在導入這些模塊之前需要mock一下。
index.ts
:
import classA from './classA';
import classB from './classB';
classA.initialise();
classB.initialise();
classA.ts
:
export default {
initialise() {},
};
classB.ts
:
export default {
initialise() {},
};
index.test.ts
:
import classA from './classA';
import classB from './classB';
describe('63797764', () => {
it('invokes its initialisation function during the import of ./initialiser', async () => {
jest.spyOn(classA, 'initialise').mockImplementation(() => console.log('mocked classA initialise'));
jest.spyOn(classB, 'initialise').mockImplementation(() => console.log('mocked classB initialise'));
await import('./');
expect(classA.initialise).toBeCalled();
expect(classA.initialise).toBeCalled();
});
});
單元測試結果:
PASS src/stackoverflow/63797764/index.test.ts (10.906s)
63797764
✓ invokes its initialisation function during the import of ./initialiser (21ms)
console.log src/stackoverflow/63797764/index.test.ts:6
mocked classA initialise
console.log src/stackoverflow/63797764/index.test.ts:7
mocked classB initialise
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 12.367s
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.