借助单元测试,您可以将一小部分代码与扩展程序的其余部分隔离,并在浏览器之外进行测试。例如,您可以编写单元测试 辅助方法正确地将值写入存储空间。
无需使用扩展程序 API 编写的代码可以像平常一样使用 Jest 等框架进行测试。为了让代码更易于以这种方式进行测试,不妨考虑使用 依赖项注入:有助于消除对 Chrome 的依赖 命名空间中。
如果您需要测试包含扩展 API 的代码,请考虑使用模拟。
示例:通过 Jest 使用模拟
创建一个 jest.config.js
文件,用于声明将在所有测试之前运行的设置文件:
jest.config.js:
module.exports = {
setupFiles: ['<rootDir>/mock-extension-apis.js']
};
在 mock-extension-apis.js
中,为您要调用的特定函数添加实现:
mock-extension-apis.js:
global.chrome = {
tabs: {
query: async () => { throw new Error("Unimplemented.") };
}
};
然后,使用 jest.spy
在测试中模拟返回值:
test("getActiveTabId returns active tab ID", async () => {
jest.spyOn(chrome.tabs, "query").mockResolvedValue([{
id: 3,
active: true,
currentWindow: true
}]);
expect(await getActiveTabId()).toBe(3);
});
后续步骤
为确保您的扩展程序按预期运行,我们建议您添加端到端测试。如需查看完整教程,请参阅使用 Puppeteer 测试 Chrome 扩展程序。