diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/ee.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/ee.service.spec.ts
index 157e2bc..90c00d0 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/ee.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/ee.service.spec.ts
@@ -15,19 +15,27 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { EeService } from '../../../../app/fw/util/ee.service';
 
 /**
  * ONOS GUI -- Util -- EE functions - Unit Tests
  */
 describe('EeService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [EeService]
-    });
-  });
+    let log: LogService;
 
-  it('should be created', inject([EeService], (service: EeService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+
+        TestBed.configureTestingModule({
+            providers: [EeService,
+                { provide: LogService, useValue: log },
+            ]
+        });
+    });
+
+    it('should be created', inject([EeService], (service: EeService) => {
+        expect(service).toBeTruthy();
+    }));
 });
diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/fn.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/fn.service.spec.ts
index c07e858..ff6ceaf 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/fn.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/fn.service.spec.ts
@@ -15,19 +15,39 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { FnService } from '../../../../app/fw/util/fn.service';
+import { ActivatedRoute, Params } from '@angular/router';
+import { of } from 'rxjs';
+
+class MockActivatedRoute extends ActivatedRoute {
+    constructor(params: Params) {
+        super();
+        this.queryParams = of(params);
+    }
+}
 
 /**
  * ONOS GUI -- Util -- General Purpose Functions - Unit Tests
  */
 describe('FnService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [FnService]
-    });
-  });
+    let log: LogService;
+    let ar: ActivatedRoute;
 
-  it('should be created', inject([FnService], (service: FnService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+        ar = new MockActivatedRoute({'debug': 'TestService'});
+
+        TestBed.configureTestingModule({
+            providers: [FnService,
+                { provide: LogService, useValue: log },
+                { provide: ActivatedRoute, useValue: ar },
+            ]
+        });
+    });
+
+    it('should be created', inject([FnService], (service: FnService) => {
+        expect(service).toBeTruthy();
+    }));
 });
diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/key.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/key.service.spec.ts
index c277344..7ceadb8 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/key.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/key.service.spec.ts
@@ -15,19 +15,31 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { KeyService } from '../../../../app/fw/util/key.service';
+import { FnService } from '../../../../app/fw/util/fn.service';
+
+class MockFnService {}
 
 /**
  * ONOS GUI -- Key Handler Service - Unit Tests
  */
 describe('KeyService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [KeyService]
-    });
-  });
+    let log: LogService;
 
-  it('should be created', inject([KeyService], (service: KeyService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+
+        TestBed.configureTestingModule({
+            providers: [KeyService,
+                { provide: LogService, useValue: log },
+                { provide: FnService, useClass: MockFnService },
+            ]
+        });
+    });
+
+    it('should be created', inject([KeyService], (service: KeyService) => {
+        expect(service).toBeTruthy();
+    }));
 });
diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/lion.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/lion.service.spec.ts
index fc8c4fc..d471005 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/lion.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/lion.service.spec.ts
@@ -16,19 +16,31 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { LionService } from '../../../../app/fw/util/lion.service';
+import { WebSocketService } from '../../../../app/fw/remote/websocket.service';
+
+class MockWebSocketService {}
 
 /**
  * ONOS GUI -- Lion -- Localization Utilities - Unit Tests
  */
 describe('LionService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [LionService]
-    });
-  });
+    let log: LogService;
 
-  it('should be created', inject([LionService], (service: LionService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+
+        TestBed.configureTestingModule({
+            providers: [LionService,
+                { provide: LogService, useValue: log },
+                { provide: WebSocketService, useClass: MockWebSocketService },
+            ]
+        });
+    });
+
+    it('should be created', inject([LionService], (service: LionService) => {
+        expect(service).toBeTruthy();
+    }));
 });
diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/prefs.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/prefs.service.spec.ts
index b27662f..0aeed99 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/prefs.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/prefs.service.spec.ts
@@ -15,19 +15,35 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { PrefsService } from '../../../../app/fw/util/prefs.service';
+import { FnService } from '../../../../app/fw/util/fn.service';
+import { WebSocketService } from '../../../../app/fw/remote/websocket.service';
+
+class MockFnService {}
+
+class MockWebSocketService {}
 
 /**
- ONOS GUI -- Util -- User Preference Service - Unit Tests
+ * ONOS GUI -- Util -- User Preference Service - Unit Tests
  */
 describe('PrefsService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [PrefsService]
-    });
-  });
+    let log: LogService;
 
-  it('should be created', inject([PrefsService], (service: PrefsService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+
+        TestBed.configureTestingModule({
+            providers: [PrefsService,
+                { provide: LogService, useValue: log },
+                { provide: FnService, useClass: MockFnService },
+                { provide: WebSocketService, useClass: MockWebSocketService },
+            ]
+        });
+    });
+
+    it('should be created', inject([PrefsService], (service: PrefsService) => {
+        expect(service).toBeTruthy();
+    }));
 });
diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/random.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/random.service.spec.ts
index 969ad69..726fc92 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/random.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/random.service.spec.ts
@@ -15,19 +15,31 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { RandomService } from '../../../../app/fw/util/random.service';
+import { FnService } from '../../../../app/fw/util/fn.service';
+
+class MockFnService {}
 
 /**
  * ONOS GUI -- Random -- Encapsulated randomness - Unit Tests
  */
 describe('RandomService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [RandomService]
-    });
-  });
+    let log: LogService;
 
-  it('should be created', inject([RandomService], (service: RandomService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+
+        TestBed.configureTestingModule({
+            providers: [RandomService,
+                { provide: LogService, useValue: log },
+                { provide: FnService, useClass: MockFnService },
+            ]
+        });
+    });
+
+    it('should be created', inject([RandomService], (service: RandomService) => {
+        expect(service).toBeTruthy();
+    }));
 });
diff --git a/web/gui2/src/main/webapp/tests/app/fw/util/theme.service.spec.ts b/web/gui2/src/main/webapp/tests/app/fw/util/theme.service.spec.ts
index b5a1ff8..f69cc5b 100644
--- a/web/gui2/src/main/webapp/tests/app/fw/util/theme.service.spec.ts
+++ b/web/gui2/src/main/webapp/tests/app/fw/util/theme.service.spec.ts
@@ -15,19 +15,27 @@
  */
 import { TestBed, inject } from '@angular/core/testing';
 
+import { LogService } from '../../../../app/log.service';
+import { ConsoleLoggerService } from '../../../../app/consolelogger.service';
 import { ThemeService } from '../../../../app/fw/util/theme.service';
 
 /**
  * ONOS GUI -- Util -- Theme Service - Unit Tests
  */
 describe('ThemeService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [ThemeService]
-    });
-  });
+    let log: LogService;
 
-  it('should be created', inject([ThemeService], (service: ThemeService) => {
-    expect(service).toBeTruthy();
-  }));
+    beforeEach(() => {
+        log = new ConsoleLoggerService();
+
+        TestBed.configureTestingModule({
+            providers: [ThemeService,
+                { provide: LogService, useValue: log },
+            ]
+        });
+    });
+
+    it('should be created', inject([ThemeService], (service: ThemeService) => {
+        expect(service).toBeTruthy();
+    }));
 });
