Как правильно настроить юнит-тесты для 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
});