Mocking — verify interactions. Stubbing — provide canned responses.
Mocking:
Mocking:
const mock = jest.fn();
userService.create(mock);
expect(mock).toHaveBeenCalledWith({name: "John"});
(Verify it was called)
Stubbing:
Stubbing:
jest.spyOn(db, "query").mockReturnValue([{id: 1}]);
const result = db.query("SELECT * FROM users");
expect(result).toEqual([{id: 1}]);
(Provide canned response)
Key differences: