mat*_*t-p 28 javascript unit-testing jestjs
我试图模拟一个函数调用,并期望它在其中调用一次其他函数.
myFunctions.test.js
import { resetModal } from '../myFunctions.js';
describe('resetModal', () => {
it('calls the clearSomethingInModal function', () => {
const clearSomethingInModal = jest.fn();
resetCreationModal();
expect(clearSomethingInModal.mock.calls.length).toBe(1);
})
})
Run Code Online (Sandbox Code Playgroud)
myFunctions.js
export resetModal() {
clearSomethingInModal()
}
Run Code Online (Sandbox Code Playgroud)
但是,Jest输出说没有被调用.如果有人能建议如何最好地做到这一点,我将非常感激.
And*_*rle 35
因为你们嘲笑你的方法没有作用clearSomethingInModal只在您的测试文件的情况下,这样clearSomethingInModal的myFunctions.js依然是原来的.重点是你不能模拟直接创建的东西 myFunctions.js.你唯一可以嘲笑的是
myFunctions.js,例如import clearSomethingInModal from 'clearSomethingInModal'如果您将其myFunctions.js视为一个黑盒子,您可以控制其中的内容,例如导入或函数参数,以及您可以在哪里测试出来的内容,这是有道理的.但是你无法测试盒子里面发生的事情.
以下是反映列表中2个点的两个示例
myFunctions.test.js
import { resetModal } from '../myFunctions.js';
import clearSomethingInModal from 'clearSomethingInModal';
jest.mock('clearSomethingInModal', () => jest.fn())
describe('resetModal', () => {
it('calls the clearSomethingInModal function', () => {
resetCreationModal();
expect(clearSomethingInModal.mock.calls.length).toBe(1);
})
})
Run Code Online (Sandbox Code Playgroud)
myFunctions.js
import clearSomethingInModal from 'clearSomethingInModal';
export resetModal() {
clearSomethingInModal()
}
Run Code Online (Sandbox Code Playgroud)
myFunctions.test.js
import { resetModal } from '../myFunctions.js';
describe('resetModal', () => {
it('calls the clearSomethingInModal function', () => {
const clearSomethingInModal = jest.fn();
resetCreationModal(clearSomethingInModal);
expect(clearSomethingInModal.mock.calls.length).toBe(1);
})
})
Run Code Online (Sandbox Code Playgroud)
myFunctions.js
export resetModal(clearSomethingInModal) {
clearSomethingInModal()
}
Run Code Online (Sandbox Code Playgroud)