javascript CustomEvent的jasmine单元测试
jasmine unit test for javascript CustomEvent
如何在jasmine中测试CustomEvent是否被调度?当我尝试运行以下代码时,我得到错误:"ReferenceError:找不到变量:CustomEvent"。
function testCustomEvent() {
window.dispatchEvent(new CustomEvent('myCustomEvent', {
detail: 'foo'
}));
}
describe('testCustomEvent', function() {
it('dispatches myCustomEvent', function() {
var eventSpy = jasmine.createSpy();
window.addEventListener('myCustomEvent', eventSpy);
testCustomEvent();
expect(eventSpy).toHaveBeenCalledWith('foo');
});
});
期望不被满足,因为eventSpy被{ detail: 'foo'}
调用
同样,传递的参数是一个新的事件对象,其中包含发送给event构造函数的形参的值。所以它从来不是同一个物体。如果你使用的是Jasmine 2.0
,你将不得不通过使用部分匹配器来强制一个深度部分相等expect(eventSpy).toHaveBeenCalledWith(jasmine.objectContaining({
detail: 'foo'
}));
或者使用2.0以下的版本会感到头疼
我认为你的代码唯一的问题是:
您使用的是toHaveBeenCalledWith
法而不是toHaveBeenCalled
法。
Former用于检查两件事:
- 期望的方法被称为
- 使用正确的参数调用期望的方法
试试在这里运行你的代码-试试Jasmine。用toHaveBeenCalled
代替toHaveBeenCalledWith
后。
注意,不要给后者传递任何参数
相关文章:
- Jasmine单元测试在监视服务方法时失败
- 测试iFrame的位置.href是在jasmine单元测试中设置的
- 在Karma Jasmine单元测试用例中检查日期格式
- AngularJS:指令限制:“E”阻止在Jasmine单元测试中调用元素click()事件
- 使用Jasmine进行角度单元测试:如何删除或修改spyOn
- 将Jasmine JavaScript单元测试与TFS Build CI集成的简单方法
- 使用Jasmine框架对javascript进行单元测试
- 当使用 Jasmine 对我的 angularJS 应用程序进行单元测试时,$interval是未定义的
- 为什么这个 Angular 指令没有在 Jasmine 单元测试中编译
- 如何使用 Jasmine 对链式方法进行单元测试
- 单元测试:AngularJS + Karma + Jasmine,加载本地JSON
- Jasmine抱怨在单元测试中导入的css
- 单元测试 Karma Jasmine 语法错误:在“&”角度指令绑定上解析错误
- Jasmine + Node.js用于服务器端单元测试.如何运行测试
- 单元测试窗口.onerror with jasmine.
- 在 Karma/Jasmine 单元测试中注入 Angular $timeout服务的真实实现
- 使用 Jasmine 进行单元测试,expect().toBeVisible()
- expect - response在AngularJS单元测试(Jasmine)中不起作用
- 重构单元测试(Jasmine)
- 单元测试——jasmine, javascript