测试 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
契约。纯函数不需要模拟,因为其他插件可以在测试中调用原始实现。