给定 HapiJS 服务器对象,如何确定插件是否已注册?

How can a determine if a plugin has been registered or not, given a HapiJS server object?

我有代码可以根据环境动态加载插件。 因为我使用的是jest --coverage,需要100%的覆盖率,所以我需要在NODE_ENV.

设置的环境条件下测试插件是否加载

我在这里寻找的是如何确定一个特定的插件是否已经注册,在我用 Glue() 和一个清单文件组成服务器对象之后,清单文件具有仅在以下情况下包含插件的逻辑NODE_ENV 不是 "production"

以防其他人试图解决这个问题,这就是我最终做的事情:

describe('GIVEN NODE_ENV is production', () => {
    describe('WHEN service is initialized', () => {
        let server;
        const OLD_ENV = process.env;

        beforeEach(async () => {
            jest.resetModules();
            process.env = { ...OLD_ENV };
            process.env.NODE_ENV = 'production';
            server = await initialize();
        });

        afterEach(async () => {
            process.env = OLD_ENV;
            await server.stop();
            server = null;
        });

        test('THEN swagger plugin should not be added', () => {
            expect(server.registrations['hapi-swagger']).not.toBeDefined();
        });

    });
});