我有一个JavaScript应用程序,用户可以在其中搜索地图上显示的位置。搜索位置是通过对服务器应用程序的AJAX调用完成的。有一个组件负责此服务器通信(searchComponent),我想单元测试通信是否正常工作。自定义事件如何对自定义AJAX事件进行单元测试
我的自定义事件的
说明是从http://api.jquery.com/jQuery.Callbacks/采取了简单的发布/订阅的实现:
var topics = {};
jQuery.Topic = function(id) {
var callbacks,
method,
topic = id && topics[ id ];
if (!topic) {
callbacks = jQuery.Callbacks();
topic = {
publish: callbacks.fire,
subscribe: callbacks.add,
unsubscribe: callbacks.remove
};
if (id) {
topics[ id ] = topic;
}
}
return topic;
};
最重要的方法是
EVENT.publish(data)
Trigg发生事件并将数据传递给所有订阅者。EVENT.subscribe(callback)
将回调函数订阅给EVENT:每当EVENT被触发时执行回调函数。
使用情况
的基本工作流程是这样的:
- 用户点击搜索按钮
- 应用程序调用
searchComponent.doSearch()
searchComponent.doSearch()
发送请求到服务器- 服务器r esponds
- 的SearchComponent触发定制事件任
SEARCH_RESULT
或SEARCH_FAILED
- 应用侦听两个事件,并从那里继续进行(显示的东西在地图上或产生错误消息)
SEARCH_RESULT
和SEARCH_FAILED
是如上所述的自定义事件。
var SEARCH_RESULT = jQuery.Topic('SEARCH_RESULT');
var SEARCH_FAILED = jQuery.Topic('SEARCH_FAILED');
我想要做什么?
我要测试是否SearchComponent的工作:
- 是对服务器的请求被正确地进行?
- 来自服务器的响应是否正确处理?
- 当我拨打无效呼叫时,搜索失败吗?
- 服务器关闭时会发生什么情况?
通常的东西。;)
问题(最后;))
如何测试这个用例?
(最好使用JS测试驱动程序,虽然我是开放对其他JavaScript测试框架的任何建议)