测试 Kibana 插件
编辑测试 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 }, …);
或者,如果您需要获取整个核心的 setup
或 start
协定
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 的模拟:setup
、start
和 stop
协定。纯函数不需要模拟,因为其他插件可以在测试中调用原始实现。