【发布时间】:2022-02-14 16:50:42
【问题描述】:
我有两个问题:
- 如何最好地对事件侦听器进行单元测试?
- 我是否正确理解
isHostMethod?
我正在尝试对事件侦听器抽象进行单元测试,但我想测试它的唯一方法是针对窗口 load 事件。
我这里有一个代码示例:https://gist.github.com/1502326
另外,我正在使用 David Mark (@cinsoft) isHostMethod 来检测相关的主机对象支持,但想知道我是否正确理解了这些概念?因此,例如,我认为宿主对象/方法应该在以下条件下可用(尽管我理解这些“条件”不可靠)是正确的:
- 如果
typeof返回function(适用于大多数浏览器) - 如果
typeof返回unknown(对于 IE - 如果
typeof返回object并且值不是null(因为ES3 规范允许null返回object,这是不正确的行为)
如果这些条件中的任何一个为真,那么(同样,不可靠)应该意味着指定的主机方法可以使用。
但即使宿主对象/方法的实现方式可能与规范规定的方式不同,因此在我创建对象并查看是否触发事件的地方进行完整的“特征检测”会更准确(或一些类似的测试)?
感谢您对这两个问题的任何建议。
【问题讨论】:
-
代码不能在没有上下文的情况下存在。您所谓的抽象是根据环境映射到相同名称的 3 个不同函数。如您所知,这些替代方案会做不同的事情(执行顺序、
this、多个侦听器),即使您仔细检查它们的存在,它们也会继续这样做。
标签: javascript dom-events host