2015-02-10 7 views
9

मैं इस नियंत्रक का परीक्षण करने केकर्म इकाई परीक्षण में कोणीय मूल्य और कोणीय निरंतर इंजेक्षन कैसे करें?

/controllers/datetimepicker.js

angular.module('c2gyoApp') 
    .value('smConfig', { 
    rate: 'A', 
    tariff: 'classic' 
    }) 
    .controller('DatetimepickerCtrl', [ 
    '$scope', 
    'stadtmobilRates', 
    'smConfig', 
    function($scope, stadtmobilRates, smConfig) { 
     ... 
     $scope.getCurrentRate = function(rate, tariff) { 
     // studi and classic have the same rates 
     if (tariff === 'studi') { 
      tariff = 'classic'; 
     } 
     return stadtmobilRates[tariff][rate]; 
     }; 
     ... 
    } 
    ]); 

मैं नियंत्रक को बदल दिया है के बाद से मैं परीक्षण लिखा था चाहते हैं। कुछ स्थिरांक angular.module('c2gyoApp').value('smConfig'){} लिए चले गए हैं और मैं भी angular.module('c2gyoApp').constant('stadtmobilRates'){} से लगातार की जरूरत है:

/services/stadtmobilrates.js

angular.module('c2gyoApp') 
    .constant('stadtmobilRates', { 
    'classic': { 
     'A': { 
     'night': 0, 
     'hour': 1.4, 
     'day': 21, 
     'week': 125, 
     'km000': 0.2, 
     'km101': 0.18, 
     'km701': 0.18 
     }, 
     ... 
}); 

यह मेरा परीक्षण अब तक है:

/परीक्षण/कल्पना /controllers/datetimepicker.js

describe('Controller: DatetimepickerCtrl', function() { 

    // load the controller's module 
    beforeEach(module('c2gyoApp')); 

    var DatetimepickerCtrl; 
    var scope; 

    // Initialize the controller and a mock scope 
    beforeEach(inject(function($controller, $rootScope) { 
    scope = $rootScope.$new(); 
    DatetimepickerCtrl = $controller('DatetimepickerCtrl', { 
     $scope: scope 
    }); 
    })); 

    it('should calculate the correct price', function() { 
    expect(scope.price(10, 10, 0, 0, 'A', 'basic') 
     .toFixed(2)).toEqual((18.20).toFixed(2)); 
     ... 
    }); 
}); 

मैं परीक्षण में angular.module('c2gyoApp').value('smConfig'){} और angular.module('c2gyoApp').constant('stadtmobilRates'){} इंजेक्ट कैसे करूं? मैं मानक yeoman लेआउट का उपयोग कर रहा हूँ। Karma.conf फ़ाइल में सभी आवश्यक .js फ़ाइलें शामिल हैं, इसलिए यह केवल एक प्रश्न है कि कोणीय तत्वों को इंजेक्ट करना है।

उत्तर

13

आप के साथ c2gyoApp मॉड्यूल जोड़ रहे हैं के बाद से:

beforeEach(module('c2gyoApp')); 

सब कुछ है कि मॉड्यूल के अंदर पंजीकृत इंजेक्शन होना चाहिए। तो, यह काम करना चाहिए:

var smConfig, stadtmobilRates; 

beforeEach(inject(function($controller, $rootScope, _smConfig_, _stadtmobilRates_) { 

    scope = $rootScope.$new(); 
    DatetimepickerCtrl = $controller('DatetimepickerCtrl', { 
     $scope: scope 
    }); 
    smConfig = _smConfig_; 
    stadtmobilRates = _stadtmobilRates_; 
} 
संबंधित मुद्दे