2016-05-04 8 views
0

Ich versuche, eine Fabrik mit Winkelmesser zu testen und angular.mocksWie dieser Winkel Fabrik testen

ist die Fabrik:

angular.module('googlemarker', []) 
    .factory('newMarker', newMarkerFactory); 

    newMarkerFactory.$inject = ['$window']; 
    function newMarkerFactory($window) { 


    function newMarker(markerOpts) { 
    var position; 
    if (markerOpts.geo) { 
     position = new $window.google.maps.LatLng(
     markerOpts.geo.lat || markerOpts.geo.latitude, 
     markerOpts.geo.lng || markerOpts.geo.longitude 
    ); 
    } 
    var markerOptions = _.assign({ 
     position: markerOpts.position || position, 
     icon: '/static/img/markers/pointer_basic.png' 
    }, markerOpts); 
    $window.google.maps.Marker.call(this, markerOptions); 
    } 
    /* this is for proper inheritance */ 
    function helperConstructor() {} 
    helperConstructor.prototype = $window.google.maps.Marker.prototype; 
    newMarker.prototype = new helperConstructor(); 
    newMarker.prototype.constructor = newMarker; 

    return newMarker; 
} 

und dann habe ich diesen Test:

(function() { 
    fdescribe('googlemarker tests', function() { 
    'use strict'; 

    var _google = { 
     maps: { 
     Marker: function (markerOpitons) { 
      this.position = markerOpitons.position; 
     }, 
     LatLng: function (lat, lng) { 
      this._lat = lat; 
      this._lng = lng; 
     } 
     } 
    }; 

    _google.maps.LatLng.prototype.lat = function() { return this._lat; }; 
    _google.maps.LatLng.prototype.lng = function() { return this._lng; }; 

    beforeEach(module('googlemarker')); 

    beforeEach(module(function($provide) { 
     $provide.service('$window', function() { this.google = google; }); 
    })); 

    it("googlemarker transform geo in google.maps.LatLng", inject(function (newMarker) { 
     var opts = { 
     geo: { 
      latitude: 2, 
      longitude: 2 
     } 
     }; 
     var marker = new newMarker(opts); 
     expect(marker.position.lat()).toEqual(opts.geo.latitude); 
    })); 
    }); 
})(); 

Allerdings funktioniert das nicht, es sagt mir, das ist undefined on line: "function newMarker" sagen, dass undefiniert ist. Kann mir jemand helfen?

Antwort

0

Jemand tötet mich: Ich habe einen Fehler auf dieser Linie:

$provide.service('$window', function() { this.google = google; }); 

es den Unterstrich als Variable haben soll ich definiert, bevor

var _google = ... 

Die Linie wie diese sein sollte: