通过sdk/system/events在修改请求观测器上测试http
Test http-on-modify-request observer via sdk/system/events?
是否可以测试http-on-modify-request
-观测器?
events
模块提供了一种emit(type, event)
方法来创建Firefox事件。要测试侦听http-on-modify-request
的模块,可以将类型设置为http-on-modify-request
。问题是如何设置event
参数以模拟web请求?文件说明
event:object
具有数据和主题属性的可选对象。data指的是要传递的字符串通过这次活动。主体应指实际的行动者/主体此事件的对象(即:发出事件的对象)。
设置event.data
会被传递为观察器的data
参数,例如字符串和event.subject
也是如此,但当我试图传递带有QueryInterface
-函数的对象时,它不起作用:
events.emit("http-on-modify-request", {"subject": {
QueryInterface : function() {
return {"URI": {"spec": 'mock://URI.spec'}}
}}});
要测试的代码与https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/system_events.
@人形机器人使用的答案
obs.notifyObservers(
{ QueryInterface : function() {
return {"URI": NetUtil.newURI("mock://URI.spec") };
}},
"http-on-modify-request",
null);
失败
JavaScript错误:"NS_NOINTERFACE:组件返回的故障代码:0x80004002(NS_NOINTERFACE)[nsISupports.QueryInterface]"{文件:"resource://gre/modules/commonjs/toolkit/loader.js->resource://addon-id/caller.js"行:xy}]
sdk/system/events
中的emit
方法对于创建看起来像Firefox中通知的观察者通知没有用处,因为它添加了包装来确保弱引用。
相反,我建议使用"vanilla"观察器服务,例如Services.jsm
:
const { Services: { obs } } = require("resource://gre/modules/Services.jsm");
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 使用Jest测试React Native应用程序
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- AngularJS指令单元测试中未定义的函数
- 一个密码测试程序,如果存在空格,它会提醒用户
- 测试角度解析方法
- Protractor:在Iframe中测试非角度应用程序
- 简单类测试未通过
- 如何在Ionic2测试版中包含Ionic.io服务
- 通过sdk/system/events在修改请求观测器上测试http