2016-05-23 18 views
1

Ich bekomme folgenden Fehler beim Versuch, Karma Tests spec in meiner App zu starten.

 Error: [$injector:modulerr] Failed to instantiate module adf.widget.tabularWidget due to: 
     Error: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded. 
      at Error (native) 
      at C:/Users/dell%20pc/Documents/Work/Client/widgets/TabularWidget/src/ta 
bularWidget.js:22:43 
      at Object.invoke (C:/Users/dell%20pc/Documents/Work/Client/bower_compone... 

Das Problem hier ist, dass, wenn ich die Tests ausführen, es nicht die Fenstereigenschaft verspotten. Folgende ist die Datei, in der dieses Problem auftritt ..

'use strict'; 
(function (windows, angular, $, _) { 

    angular.module('adf.widget.tabularWidget') 
     .config(function (dashboardProvider) { 

      //more code 

      //issue line 
      var widgetDefsApiUrl = window.atob(window.api) + 
       "Widget/definitions?access_token=" + window.atob(window.acstkn); 

     }); 

})(window, angular, $, _); 

Aber wenn ich jeden Test kommentieren Sie nur diese Zeile Fällen läuft in Ordnung ohne Problem. Also, wenn ich die widgetDefsApiUrl irgendwie verspotten und es in meine Testfälle injizieren kann, wäre mein Problem gelöst. Aber ich bin nicht sicher, wie es geht. Kann mir bitte jemand in die richtige Richtung zeigen?

EDIT: Ich habe das Problem isoliert. Das Problem ist, dass window.api ist hier undefiniert daher der window.atob() gibt den Fehler. Wie würde ich dieses Problem überwinden?

Antwort

2

Die Lösung gefunden. muss nur das Fensterobjekt in einem beforeEach Block verspotten.

3

Sie können Fensterobjekt direkt erhalten und Eigenschaften und Methoden anhängen.

beforeEach(function() { 
     window.api = function() {}; 
     window.atob = function() {}; 
)};