如何测试在Chrome扩展中使用Jasmine打开新标签
How to test opening new tab with Jasmine in Chrome extension?
我正在构建chrome扩展,我在让测试按我希望的方式运行时遇到了一些问题。我只需转到扩展url ending tests.html即可访问此页面。
假设我想测试以下非常简单的场景:新的选项卡在chrome中打开并加载,我的扩展检测到该事件,新的选项卡添加到我的应用程序中的选项卡阵列中。我把所有的Jasmine测试都放在一个单独的扩展页面上。
我尝试了以下几件事,但都失败了。
第一,尝试用一些Timeout(加载页面所需的)来调用Jasmine"expect"。
describe("Tab collection", function () {
it("after opening new tab it should be in app.tabs", function () {
chrome.tabs.create({"url":"http://www.google.com"});
setTimeout(function () {
expect(app.tabs.length).toBe(1);
console.log("app.tabs.length after timeout", app.tabs.length);
},100);
});
Console.log不记录任何内容,测试是绿色的,甚至很难,很明显它没有运行。
第二,尝试在chrome.tabs.create回调函数中运行"expect"。
it("after opening new tab it shoule be in app.tabs", function () {
chrome.tabs.create({"url":"http://www.google.com"}, function () {
expect(app.tabs.length).toBe(1); //
console.log("app.tabs.length in callback to chrome.tabs.create",app.tabs.length);
})
});
});
Console.log记录0,但由于某些原因,测试通过。如果app.tabs.length为0,为什么会通过?
第三个场景涉及在打开新的chrome选项卡后运行我的所有测试
chrome.tabs.open({some_url},function (tab) {
execJasmine()
chrome.tabs.remove(tab['id'])
})
这是可行的,但非常不方便,我所有的测试现在都用这个打开的选项卡运行。它实际上不允许我测试东西。
第四,我试着用Jasmine BeforeEach 做这件事
beforeEach(function () {
chrome.tabs.create(some_url);
});
这最接近正常,但现在测试失败,app.tabs.length为0,因为调用测试套件时尚未加载页面。
有人遇到类似的问题吗?如何测试描述的场景?
您的测试是同步的。您必须在it
的回调中声明第二个参数才能使测试异步:
describe("Tab collection", function () {
it("after opening new tab it should be in app.tabs", function(done) {
// ^^^^
chrome.tabs.create({"url":"http://www.google.com"}, function() {
expect(app.tabs.length).toBe(1);
console.log("app.tabs.length after timeout", app.tabs.length);
done(); // <------
});
});
// ...
});
相关文章:
- 在新标签上打开链接,IE7-8和safari所有版本都无法使用
- 广告拦截处于活动状态,然后不要打开超链接到新标签
- 在新标签页打开时触发 Chrome 扩展程序
- 使用父标签中的样式属性附加新标签
- 如何测试在Chrome扩展中使用Jasmine打开新标签
- 创建包含预定结构的新标签
- JavaScript禁用”;打开”"打开新标签”;以及“;复制“;长按iOS 8 safari中的锚标签
- 火狐插件不会打开带有url的新标签
- Chrome扩展程序修改新标签页正文
- 谷歌浏览器移动模拟器:如何强制它在模拟器中也打开新标签
- window.open 会打开一个新标签页,而不是一个新窗口(在 chrome 中)
- 无法使用 Chrome 扩展程序弹出窗口中的按钮打开新标签页
- Symfony - 嵌入表单中的食谱“添加新标签”不起作用
- IMACRO的脚本会打开2个带有特定URL的新标签
- 如何刷新 qtip 标签以在悬停时显示特定按钮的新标签
- 当我打印它新标签时如何保持页面设计 Jquery.
- 创建新标签页时隐藏Chrome扩展程序页面的网址
- 如何制作一个 chrome 扩展程序,以打开带有多个按钮的弹出菜单,这些按钮可在新标签页中打开链接
- 使用普通的JavaScript在html头中插入新标签
- 如何在谷歌浏览器的新标签页中打开页面中的链接