Testing 使用Lab测试HapiJS插件的最佳方法是什么?

Testing 使用Lab测试HapiJS插件的最佳方法是什么?,testing,hapijs,lab,Testing,Hapijs,Lab,测试HapiJS插件的最佳方法是什么,例如添加路由和处理程序的插件 既然我必须创建一个Hapi.Server实例来运行插件,我是否应该为所有插件定义应用程序根目录中的所有测试 或 我应该设法在插件的本地测试中获得Hapi.Server的实例吗 如果我选择第二个选项,我的服务器将注册所有插件,包括那些要测试的插件不依赖的插件 最好的方法是什么 提前感谢。如果您正在使用(我强烈推荐),您可以为要执行的每个测试(或测试组)创建一个清单变量。清单只需要包含测试正确执行所需的插件 并公开某种类型的init

测试HapiJS插件的最佳方法是什么,例如添加路由和处理程序的插件

既然我必须创建一个Hapi.Server实例来运行插件,我是否应该为所有插件定义应用程序根目录中的所有测试

我应该设法在插件的本地测试中获得Hapi.Server的实例吗

如果我选择第二个选项,我的服务器将注册所有插件,包括那些要测试的插件不依赖的插件

最好的方法是什么

提前感谢。

如果您正在使用(我强烈推荐),您可以为要执行的每个测试(或测试组)创建一个清单变量。清单只需要包含测试正确执行所需的插件

并公开某种类型的
init
函数来实际启动服务器。小例子:

import Lab = require("lab");
import Code = require('code');
import Path = require('path');
import Server = require('../path/to/init/server');
export const lab = Lab.script();
const it = lab.it;
const describe = lab.describe;

const config = {...};

const internals = {
    manifest: {
        connections: [
            {
                host: 'localhost',
                port: 0
            }
        ],
        registrations: [
            {
                plugin: {
                    register: '../http_routes',
                    options: config
                }
            },
            {
                plugin: {
                    register: '../business_plugin',
                    options: config
                }
            }
        ]
    },
    composeOptions: {
        relativeTo: 'some_path'
    }
};

describe('business plugin', function () {

    it('should do some business', function (done) {

        Server.init(internals.manifest, internals.composeOptions, function (err, server) {
            // run your tests here
        });
    });

});
init
函数:

export const init = function (manifest: any, composeOptions: any, next: (err?: any, server?: Hapi.Server) => void) {
    Glue.compose(manifest, composeOptions, function (err: any, server: Hapi.Server) {

        if (err) {
            return next(err);
        }

        server.start(function (err: any) {

            return next(err, server);
        });
    });
};

谢谢我会用的。