Liều tiếp cận của bạn không hoạt động vì bạn chỉ giả chế clearSomethingInModal
chỉ trong ngữ cảnh tệp thử nghiệm của bạn, vì vậy clearSomethingInModal
trong số myFunction.js
vẫn là bản gốc. Điểm chính là bạn không thể giả lập một cái gì đó được tạo trực tiếp trong myFunction.js
. Điều duy nhất mà bạn có thể thử là
- module mà bạn nhập vào
myFunction.js
, như import clearSomethingInModal from 'clearSomethingInModal'
- callbacks mà bạn vượt qua thành chức năng của mình khi gọi họ từ thử nghiệm của bạn
này có ý nghĩa nếu bạn suy nghĩ về myFunction.js
làm hộp đen, nơi bạn có thể kiểm soát những gì xảy ra, như nhập khẩu hoặc đối số chức năng và nơi bạn có thể kiểm tra những gì xuất hiện. Nhưng bạn không thể kiểm tra những thứ xảy ra bên trong hộp.
Dưới đây là hai ví dụ mà phản ánh 2 điểm trong danh sách
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);
})
})
myFunctions.js
import clearSomethingInModal from 'clearSomethingInModal';
export resetModal() {
clearSomethingInModal()
}
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);
})
})
myFunctions.js
export resetModal(clearSomethingInModal) {
clearSomethingInModal()
}
Nguồn
2016-11-24 08:02:22
Cảm ơn Andreas, đó là một lời giải thích tuyệt vời. Vì vậy, tôi lấy nó mà không thay đổi cấu trúc chức năng của tôi, tôi không thể kiểm tra theo cách tôi muốn. Vì vậy, (a) sẽ ngụ ý một vấn đề trong việc thiết kế các chức năng, và (b), trong hình thức hiện tại của nó, sẽ có bất kỳ thử nghiệm hợp lệ mà bạn có thể áp dụng cho nó? Lưu ý rằng hàm 'resetModal' cũng gọi một số hàm khác bên trong nó mà tôi đã bỏ qua cho ngắn gọn –