2016-03-30 8 views
0

Wenn ich versuche, einen Schluck Test zu tun, das ist, wasGulp Test nicht

Error: spyOn could not find an object to spy upon for logout() 
     at /workspace/WebServices/src/test/javascript/spec/components/auth/auth.services.spec.js:9 
    TypeError: 'undefined' is not an object (evaluating '$httpBackend.verifyNoOutstandingExpectation') 
     at /workspace/WebServices/src/test/javascript/spec/components/auth/auth.services.spec.js:9 
PhantomJS 1.9.8 (Linux 0.0.0): Executed 53 of 53 (53 FAILED) (0 secs/0.776 secs) 
PhantomJS 1.9.8 (Linux 0.0.0): Executed 53 of 53 (53 FAILED) ERROR (1 min 8.425 secs/0.776 secs) 
[20:17:05] 'test' errored after 1.23 min 

Jede Idee geschieht, was los hier?

-Code in der Datei

'use strict'; 

describe('Service Tests', function() { 
    beforeEach(mockI18nCalls); 
    beforeEach(mockScriptsCalls); 

    describe('Auth', function() { 
     var $httpBackend, spiedLocalStorageService, authService, spiedAuthServerProvider; 

     beforeEach(inject(function($injector, localStorageService, Auth, AuthServerProvider) { 
      $httpBackend = $injector.get('$httpBackend'); 
      spiedLocalStorageService = localStorageService; 
      authService = Auth; 
      spiedAuthServerProvider = AuthServerProvider; 

      $httpBackend.expectPOST(/api\/logout\?cacheBuster=\d+/).respond(200, ''); 
     })); 
     //make sure no expectations were missed in your tests. 
     //(e.g. expectGET or expectPOST) 
     afterEach(function() { 
      $httpBackend.verifyNoOutstandingExpectation(); 
      $httpBackend.verifyNoOutstandingRequest(); 
     }); 

     it('should call backend on logout then call authServerProvider.logout', function(){ 
      //GIVEN 
      //Set spy 
      spyOn(spiedAuthServerProvider, 'logout').and.callThrough(); 
      spyOn(spiedLocalStorageService, "clearAll").and.callThrough(); 

      //WHEN 
      authService.logout(); 
      //flush the backend to "execute" the request to do the expectedGET assertion. 
      $httpBackend.flush(); 

      //THEN 
      expect(spiedAuthServerProvider.logout).toHaveBeenCalled(); 
      expect(spiedLocalStorageService.clearAll).toHaveBeenCalled(); 
     }); 

    }); 
}); 

Nachdem die Änderungen vorgenommen haben, die Wilmer vorgeschlagen

spiedLocalStorageService = $injector.get(localStorageService); 
authService = $injector.get(Auth); 
spiedAuthServerProvider = $injector.get(AuthServerProvider); 

Der Ausgang

ttp%3A%2F%2Flocalhost%3A9876%2Fabsolute%2Fhome%2Far%2FDocuments%2Fworkspace%2FWebServices%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F578a1e5ff14db21b04e2d6db7fd0eda37042440c%3A1819)%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fabsolute%2Fhome%2Far%2FDocuments%2Fworkspace%2FWebServices%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F578a1e5ff14db21b04e2d6db7fd0eda37042440c%3A1774%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fabsolute%2Fhome%2Far%2FDocuments%2Fworkspace%2FWebServices%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F578a1e5ff14db21b04e2d6db7fd0eda37042440c%3A1801%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fabsolute%2Fhome%2Far%2FDocuments%2Fworkspace%2FWebServices%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F578a1e5ff14db21b04e2d6db7fd0eda37042440c%3A1745%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A9876%2Fabsolute%2Fhome%2Far%2FDocuments%2Fworkspace%2FWebServices%2Fnode_modules%2Fjasmine-core%2Flib%2Fjasmine-core%2Fjasmine.js%3F578a1e5ff14db21b04e2d6db7fd0eda37042440c%3A2348 
     at /home/ar/Documents/workspace/WebServices/src/main/webapp/bower_components/angular/angular.js:9 
     at forEach (/home/ar/Documents/workspace/WebServices/src/main/webapp/bower_components/angular/angular.js:9) 
     at loadModules (/home/ar/Documents/workspace/WebServices/src/main/webapp/bower_components/angular/angular.js:9) 
     at createInjector (/home/ar/Documents/workspace/WebServices/src/main/webapp/bower_components/angular/angular.js:9) 
     at workFn (/home/ar/Documents/workspace/WebServices/src/main/webapp/bower_components/angular-mocks/angular-mocks.js:9) 
    Error: spyOn could not find an object to spy upon for logout() 
     at /home/ar/Documents/workspace/WebServices/src/test/javascript/spec/components/auth/auth.services.spec.js:9 
    TypeError: 'undefined' is not an object (evaluating '$httpBackend.verifyNoOutstandingExpectation') 
     at /home/ar/Documents/workspace/WebServices/src/test/javascript/spec/components/auth/auth.services.spec.js:9 
PhantomJS 1.9.8 (Linux 0.0.0): Executed 53 of 53 (53 FAILED) (0 secs/0.866 secs) 
PhantomJS 1.9.8 (Linux 0.0.0): Executed 53 of 53 (53 FAILED) ERROR (3.279 secs/0.866 secs) 
[20:20:00] 'test' errored after 7.29 s 
[20:20:00] Error: 1 
    at formatError (/usr/local/lib/node_modules/gulp/bin/gulp.js:169:10) 
    at Gulp.<anonymous> (/usr/local/lib/node_modules/gulp/bin/gulp.js:195:15) 
    at emitOne (events.js:90:13) 
    at Gulp.emit (events.js:182:7) 
    at Gulp.Orchestrator._emitTaskDone (/home/ar/Documents/workspace/WebServices/node_modules/orchestrator/index.js:264:8) 
    at /home/ar/Documents/workspace/WebServices/node_modules/orchestrator/index.js:275:23 
    at finish (/home/ar/Documents/workspace/WebServices/node_modules/orchestrator/lib/runTask.js:21:8) 
    at cb (/home/ar/Documents/workspace/WebServices/node_modules/orchestrator/lib/runTask.js:29:3) 
    at removeAllListeners (/home/ar/Documents/workspace/WebServices/node_modules/karma/lib/server.js:333:7) 
    at Server.<anonymous> (/home/ar/Documents/workspace/WebServices/node_modules/karma/lib/server.js:344:9) 
    at Server.g (events.js:273:16) 
    at emitNone (events.js:85:20) 
    at Server.emit (events.js:179:7) 
    at emitCloseNT (net.js:1527:8) 
    at _combinedTickCallback (node.js:374:13) 
    at process._tickCallback (node.js:401:11) 
[INFO] ---------------------------------------- 
+0

Sie sollten uns zeigen, den Code dieser Datei /workspace/WebServices/src/test/javascript/spec/components/auth/auth.services .spec.js, so dass wir Ihnen helfen können –

+0

hinzugefügt den Code, der das Problem –

+0

Was ist Ihr Ziel? Schluckarbeiten machen? oder um deine Jasmin-Unit-Tests zu reparieren? –

Antwort

0

Sie müssen die Instanz für die localStorageService bekommen, die Auth und den AuthServerProvider-Diensten entsprechend.

Wrong

spiedLocalStorageService = localStorageService; 
authService = Auth; 
spiedAuthServerProvider = AuthServerProvider; 

Rechts

spiedLocalStorageService = $injector.get(localStorageService); 
authService = $injector.get(Auth); 
spiedAuthServerProvider = $injector.get(AuthServerProvider); 

Du hast es richtig für $ httpBackend mit:

$httpBackend = $injector.get('$httpBackend'); 

Der Hint

Error: spyOn could not find an object to spy upon for ... 

mit Schwerpunkt auf Objekt

+0

Danke für die Hilfe. Aber jetzt gibt es einen neuen Fehler. Ich werde es meiner Frage hinzufügen –