рассмотрим функцию
exports.projectNotifyLaunch = (admin, functions) => {
return functions.database.ref("/projects/{pid}").onCreate(snap => {
const { title } = snap.val();
const notification = {
title: `${title} just launched!`,
body: `We just heard about a new cryptocurrency project called ${title}`
};
return admin.messaging().sendToTopic("premium", { notification });
});
};
Как мне издеваться над глубоко вложенными функциями, такими как
functions.database.ref("/projects/{pid}").onCreate(snap => {});
или
admin.messaging().sendToTopic("premium", { notification });
в шутку?Я хочу запустить обратный вызов snap=>{}
и подтвердить значение notification
.
Мне удалось сделать эту работу
Это работает, но довольно многословно.Мне интересно, есть ли лучший способ или тип тестирования, о котором я не знаю, с Jest.
describe("send notification to premium users on new project", () => {
// INPUTS
const snap = {
val: () => ({
title: "Test Title"
})
};
const functions = {
database: {
ref: () => ({
onCreate: callback => callback(snap)
})
}
};
// outputs
let topicStub = null;
let notificationStub = null;
const admin = {
messaging: () => ({
sendToTopic: (topic, notification) => {
topicStub = topic;
notificationStub = notification;
}
})
};
projectNotifyLaunch(admin, functions);
test("title is correct", () => {
expect(notificationStub.notification.title).toBe(
"Test Title just launched!"
);
});
test("topic is premium", () => {
expect(topicStub).toBe("premium");
});
});