测试 Kibana 插件编辑

编写测试编辑

了解有关 推荐的测试方法

在测试中模拟 Kibana 核心服务编辑

核心服务已经提供了模拟来简化测试,并确保插件始终依赖于有效的公共契约

my_plugin/server/plugin.test.ts

import { configServiceMock } from '@kbn/core/server/mocks';

const configService = configServiceMock.create();
configService.atPath.mockReturnValue(config$);
…
const plugin = new MyPlugin({ configService }, …);

或者,如果您需要获取整个核心 setupstart 契约

my_plugin/server/plugin.test.ts

import { coreMock } from '@kbn/core/public/mocks';

const coreSetup = coreMock.createSetup();
coreSetup.uiSettings.get.mockImplementation((key: string) => {
  …
});
…
const plugin = new MyPlugin(coreSetup, ...);

为您的插件编写模拟编辑

虽然这不是强制性的,但我们强烈建议您也导出插件模拟,以便依赖插件可以在测试中使用它们。您的插件模拟应该从插件的根目录 /server/public 中导出

my_plugin/(server|public)/mocks.ts

const createSetupContractMock = () => {
  const startContract: jest.Mocked<MyPluginStartContract>= {
    isValid: jest.fn(),
  }
  // here we already type check as TS infers to the correct type declared above
  startContract.isValid.mockReturnValue(true);
  return startContract;
}

export const myPluginMocks = {
  createSetup: createSetupContractMock,
  createStart: …
}

插件模拟应该只包含对_公共 API_ 的模拟:setupstartstop 契约。纯函数不需要模拟,因为其他插件可以在测试中调用原始实现。