Merge pull request #273 from nasa/open231
[Core] Catch errors from listeners in topic
This commit is contained in:
@@ -28,13 +28,18 @@ define(
|
||||
|
||||
describe("The 'topic' service", function () {
|
||||
var topic,
|
||||
mockLog,
|
||||
testMessage,
|
||||
mockCallback;
|
||||
|
||||
beforeEach(function () {
|
||||
testMessage = { someKey: "some value"};
|
||||
mockLog = jasmine.createSpyObj(
|
||||
'$log',
|
||||
[ 'error', 'warn', 'info', 'debug' ]
|
||||
);
|
||||
mockCallback = jasmine.createSpy('callback');
|
||||
topic = new Topic();
|
||||
topic = new Topic(mockLog);
|
||||
});
|
||||
|
||||
it("notifies listeners on a topic", function () {
|
||||
@@ -65,6 +70,21 @@ define(
|
||||
expect(mockCallback).toHaveBeenCalledWith(testMessage);
|
||||
});
|
||||
|
||||
it("is robust against errors thrown by listeners", function () {
|
||||
var mockBadCallback = jasmine.createSpy("bad-callback"),
|
||||
t = topic();
|
||||
|
||||
mockBadCallback.andCallFake(function () {
|
||||
throw new Error("I'm afraid I can't do that.");
|
||||
});
|
||||
|
||||
t.listen(mockBadCallback);
|
||||
t.listen(mockCallback);
|
||||
|
||||
t.notify(testMessage);
|
||||
expect(mockCallback).toHaveBeenCalledWith(testMessage);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user