jest를 사용하여 Mailer
클래스를 모의하려고하는데 어떻게해야하는지 알 수 없습니다. 문서는 이것이 어떻게 작동하는지에 대한 많은 예를 제공하지 않습니다. 그 과정은 내가 노드 이벤트 password-reset
을 해고하고 해당 이벤트가 시작되면 Mailer.send(to, subject, body)
을 사용하여 이메일을 보내려고합니다.Jest를 사용하여 es6 클래스를 조롱하는 방법
project_root
-- __test__
---- server
------ services
-------- emails
---------- mailer.test.js
-- server
---- services
------ emails
-------- mailer.js
-------- __mocks__
---------- mailer.js
내 모의 파일 __mocks__/mailer.js
다음과 같습니다 : 여기 내 디렉토리 구조입니다
const Mailer = jest.genMockFromModule('Mailer');
function send(to, subject, body) {
return { to, subject, body };
}
module.exports = Mailer;
내 mailer.test.js
const EventEmitter = require('events');
const Mailer = jest.mock('../../../../server/services/emails/mailer');
test('sends an email when the password-reset event is fired',() => {
const send = Mailer.send();
const event = new EventEmitter();
event.emit('password-reset');
expect(send).toHaveBeenCalled();
});
그리고 마지막으로 내 mailer.js
클래스 :
class Mailer {
constructor() {
this.mailgun = require('mailgun-js')({
apiKey: process.env.MAILGUN_API_KEY,
domain: process.env.MAILGUN_DOMAIN,
});
}
send(to, subject, body) {
return new Promise((reject, resolve) => {
this.mailgun.messages().send({
from: 'Securely App <[email protected]>',
to,
subject: subject,
html: body,
}, (error, body) => {
if (error) {
return reject(error);
}
return resolve('The email was sent successfully!');
});
});
}
}
module.exports = new Mailer();
Jest를 사용하여이 클래스를 모의하고 테스트하려면 어떻게해야합니까? 도와 주셔서 대단히 감사합니다!
나는 집에 가서 이것을 시험해 볼 수 없습니다. 아주 훌륭한 설명을 해주셔서 정말 고마워요. – dericcain