Какой лучший способ издеваться над вложенной функцией? - PullRequest
0 голосов
/ 24 сентября 2018

рассмотрим функцию

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");
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...