Как правильно настроить юнит-тесты для Probot с расширением планировщика?

Я использую следующее минимальное приложение-пробот и пытаюсь написать для него модульные тесты Mocha.

К сожалению, это приводит к ошибке ниже, которая указывает на то, что некоторые из моих настроек для закрытого ключа или токенов безопасности не подобраны.

Я предполагаю, что конфигурация с моим .env файл правильный, так как я не получаю ту же ошибку при запуске пробот через probot-run.js,

Есть ли дополнительные шаги, необходимые для настройки пробот при использовании с Мокко? Любые предложения о том, почему использование расширения планировщика может привести к такой проблеме, было бы здорово.

Код и ошибка ниже:

app.ts

import createScheduler from "probot-scheduler";
import { Application } from "probot";

export = (app: Application) => {

  createScheduler(app, {
    delay: !!process.env.DISABLE_DELAY, // delay is enabled on first run
    interval: 24 * 60 * 60 * 1000 // 1 day
  });

  app.on("schedule.repository", async function (context) {
    app.log.info("schedule.repository");
    const result = await context.github.pullRequests.list({owner: "owner", repo: "test"});
    app.log.info(result);
  });
};

test.ts

import createApp from "../src/app";

import nock from "nock";
import { Probot } from "probot";

nock.disableNetConnect();

describe("my scenario", function() {
  let probot: Probot;
  beforeEach(function() {
    probot = new Probot({});
    const app = probot.load(createApp);
  });

  it("basic feature", async function() {
    await probot.receive({name: "schedule.repository", payload: {action: "foo"}});
  });
});

Это, к сожалению, приводит к следующей ошибке:

 Error: secretOrPrivateKey must have a value
  at Object.module.exports [as sign] (node_modules/jsonwebtoken/sign.js:101:20)
  at Application.app (node_modules/probot/lib/github-app.js:15:39)
  at Application.<anonymous> (node_modules/probot/lib/application.js:260:72)
  at step (node_modules/probot/lib/application.js:40:23)
  at Object.next (node_modules/probot/lib/application.js:21:53)

1 ответ

Решение

Получается что new Probot({}); как предложено в документации, инициализирует объект Probot без каких-либо параметров (данный объект параметров {} пусто в конце концов).

Чтобы избежать ошибки, можно предоставить информацию вручную:

new Probot({
  cert: "...",
  secret: "...",
  id: 12345
});
Другие вопросы по тегам