我不明白如何偵測一個模塊內部的方法/函數是否被觸發。 這是我的例子:我該如何使用Jest來測試一個NodeJs模塊/ app
db.js
module.exports.saveUser = (user) => {
console.log('Saving the user', user);
};
app.js
let db = require('./db');
module.exports.handleSignup = (email, password) => {
db.saveUser({ email, password });
}
app.test.js
const db = require('./db');
jest.genMockFromModule('./app');
const app = require('./app');
describe('App: ',() => {
it('should call "db.saveUser" with a user object',() => {
let dbSpy = jest.spyOn(db, 'saveUser');
const user = { email: '[email protected]', password: 'abc123' };
app.handleSignup(user.email, user.password);
expect(dbSpy).toBeCalled();
});
});
通過運行此測試我可以從shell中看到在saveUser()中編寫的console.log,因此它意味着db.saveUser()正在觸發並且Jest不會嘲笑saveUser()。 我在做什麼錯?