Har*_*ddy 5 unit-testing google-chrome-extension jestjs
我想使用 jest 框架模拟 chrome api。例如,我使用chrome.browserAction.setIcon向后台脚本发送消息。我如何模拟chrome.browserAction.setIcon或任何其他 api,例如chrome.runtime.sendMessage测试该方法是否已被调用?
我曾尝试使用 jest.spyOn() 来测试该方法是否已被调用。
下面是测试方法
test("mock testing chrome",()=>{
spyOn(chrome,
chrome.browserAction.setIcon);
content.chromemocktest();
expect(spy).toHaveBeenCalledWith({path:"/images.png"});
});
Run Code Online (Sandbox Code Playgroud)
我正在测试的方法是:
chromemocktest: function(){
chrome.browserAction.setIcon({path:"/image.png"});
}
Run Code Online (Sandbox Code Playgroud)
当我运行npm run testfor running 测试用例时,它抛出一个错误,如下所示。
<spyOn> : stub() method does not exist
Usage: spyOn(<object>, <methodName>)
Run Code Online (Sandbox Code Playgroud)
问题是nodejs全局对象中不存在chrome对象。
所以你必须首先创建一个模拟对象:
global.chrome = {
browserAction: {
setIcon: function () {}
}
};
Run Code Online (Sandbox Code Playgroud)
之后您应该能够监视对象的方法:
spyOn(chrome, chrome.browserAction.setIcon);
Run Code Online (Sandbox Code Playgroud)
如果您不想自己为 Chrome API 的每个对象创建模拟,您可以使用以下现成的解决方案。
| 归档时间: |
|
| 查看次数: |
1222 次 |
| 最近记录: |