2017-03-13 2 views
0

Meine JS-Datei:

case "launch": helper.urlLaunch("http://www.google.com").then(function(){start();}); 

Definition von urlLaunch

urlLaunch: function (url) { 
      //... 
      return $q.when(); 
     }, 

Unit-Tests

it("should test helper launch url", function() { 
      spyOn(helper, "urlLaunch").and.callFake(function(){}); 
      mySvc.purchase(Url: PURCHASE_URL }); //this calls the "launch" case given above 
      $httpBackend.flush(); 
      expect(helper.urlLaunch).toHaveBeenCalled(); 
     }); 

Aber das gibt mir einen Fehler „Typee rror: plan.apply ist keine Funktion "

Irgendwelche Ideen, was fehlt mir hier?

Antwort

1

Ihre URLLaunch-Funktion soll ein Versprechen zurückgeben, aber Sie verspotten es mit einer falschen Funktion, die nichts zurückgibt. Der Code, der das zurückgegebene Versprechen verwendet, erhält also tatsächlich undefined. Das kann nicht funktionieren.

Sie benötigen ein Versprechen aus der ausspioniert Funktion zurückzukehren:

spyOn(helper, "urlLaunch").and.returnValue($q.when('some fake result')); 
mySvc.purchase(Url: PURCHASE_URL }); 
$scope.$apply(); // to actually resolve the fake promise, and trigger the call of the callbacks 

// ... 
+0

, die funktioniert! Vielen Dank –

Verwandte Themen