HTML and CSS Reference
In-Depth Information
Listing 13.53 Testing observers
TestCase("CometClientObserveTest", {
setUp: function () {
this.client = Object.create(ajax.cometClient);
},
"test should remember observers": function () {
var observers = [stubFn(), stubFn()];
this.client.observe("myEvent", observers[0]);
this.client.observe("myEvent", observers[1]);
var data = { myEvent: [{}] };
this.client.dispatch(data);
assert(observers[0].called);
assertSame(data.myEvent[0], observers[0].args[0]);
assert(observers[1].called);
assertSame(data.myEvent[0], observers[1].args[0]);
}
});
observe is still an empty method, so this test fails. Listing 13.54 pieces in the
missing link. For this to work you need to save the observable implementation
from Chapter 11, The Observer Pattern, in lib/observable.js .
Listing 13.54 Remembering observers
(function () {
var ajax = tddjs.ajax;
var util = tddjs.util;
/* ... */
function observe(topic, observer) {
if (!this.observers) {
this.observers = Object.create(util.observable);
}
this.observers.observe(topic, observer);
}
ajax.cometClient = {
dispatch: dispatch,
observe: observe
};
});
 
Search WWH ::




Custom Search