Как создать ручной макет с шуткой в ​​nodejs приложении для mailgun- js? - PullRequest
0 голосов
/ 23 февраля 2020

код в app / src / emails / account. js

const mailgun = require("mailgun-js");
const DOMAIN = "sxxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org";
const mg = mailgun({apiKey: process.env.MAILGUN_API_KEY, domain: DOMAIN});

const sendWelcomeEmail = async (email, name) => {
    const dataForMail = {
        to: email,
        from: 'zzz@xxx.com',
        subject: 'Testing!',
        text: `Welcome to the app, ${name}, let me know how you get along with the app.`,

    }

    mg.messages().send(dataForMail)

}

код в app / test / __ mocks __ / mailgun- js:

module.exports = {
    messages() {

    },
    send() {

    },
    mailgun() {

    }

}

Всякий раз, когда я запустить Jest, он говорит, что «MailGun не является функцией». Как я могу создать ручной макет для этого конструктора?

1 Ответ

0 голосов
/ 24 февраля 2020

Мой макет - это объект, а не функция. Тестовые дубликаты должны соответствовать интерфейсу того, что они заменяют; в этом случае это должна быть функция, которая возвращает объект с помощью метода сообщений (который возвращает объект с помощью метода send). Мой макет не соответствует этой структуре вообще. (Большое спасибо @jonrsharpe за сообщение) mailgun- js. js необходимо редактировать так же.

module.exports = function(apiKey, domain) {
    const object2 = {
        send() {

        }
    }

    const object1 = {
        messages () {
            return object2
        }
    }
    return object1
}
...