diff --git a/spec/core/ReportDispatcherSpec.js b/spec/core/ReportDispatcherSpec.js index 21224821..e0f8865e 100644 --- a/spec/core/ReportDispatcherSpec.js +++ b/spec/core/ReportDispatcherSpec.js @@ -37,4 +37,27 @@ describe("ReportDispatcher", function() { dispatcher.foo(123, 456); }).not.toThrow(); }); + + it("allows providing a fallback reporter in case there's no other report", function() { + var dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar']), + reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']); + + dispatcher.provideFallbackReporter(reporter); + dispatcher.foo(123, 456); + expect(reporter.foo).toHaveBeenCalledWith(123, 456); + + }); + it("does not call fallback reporting methods when another report is provided", function() { + var dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar']), + reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']), + fallbackReporter = jasmine.createSpyObj('otherReporter', ['foo', 'bar']); + + dispatcher.provideFallbackReporter(fallbackReporter); + dispatcher.addReporter(reporter); + dispatcher.foo(123, 456); + + expect(reporter.foo).toHaveBeenCalledWith(123, 456); + expect(fallbackReporter.foo).not.toHaveBeenCalledWith(123, 456); + + }); }); diff --git a/src/core/ReportDispatcher.js b/src/core/ReportDispatcher.js index 64454f0c..d62f36ea 100644 --- a/src/core/ReportDispatcher.js +++ b/src/core/ReportDispatcher.js @@ -13,14 +13,23 @@ getJasmineRequireObj().ReportDispatcher = function() { } var reporters = []; + var fallbackReporter = null; this.addReporter = function(reporter) { reporters.push(reporter); }; + + this.provideFallbackReporter = function(reporter) { + fallbackReporter = reporter; + }; + return this; function dispatch(method, args) { + if (reporters.length === 0 && fallbackReporter !== null) { + reporters.push(fallbackReporter); + } for (var i = 0; i < reporters.length; i++) { var reporter = reporters[i]; if (reporter[method]) {