2014-09-18 13 views
11

के साथ कोणीय "नियंत्रक के रूप में परीक्षण" मैं कोणीय ऐप में "नियंत्रक के रूप में" वाक्यविन्यास का उपयोग कर रहा हूं। और अब यह परीक्षण के लिए समय है, लेकिन सभी उदाहरण नियंत्रकों के लिए हैं जो $ स्कोप से इंजेक्शन दिए जाते हैं। मैं "this.addItem" विधि को कैसे कॉल करूं और जांचूं कि उसने जैस्मीन परीक्षण में "this.items" में कोई आइटम जोड़ा है?जैस्मीन

(function() { 
"use strict"; 
    angular.module('myModule', ['factoryModule']) 
    .controller('MyController', function (myFactory) { 
     this.items = []; 

     this.selectedItem = null; 

     this.addItem = function (itemType) { 
      var item = myFactory.create(itemType); 
      this.items.push(trigger); 
      this.selectedItem = item; 
     }; 

     this.removeItem = function (item) { 
      this.items.splice(this.items.indexOf(item), 1); 
     }; 
    }); 
})(); 
+3

अपने परीक्षण में, आप '$ नियंत्रक' सेवा का उपयोग कर नियंत्रक का एक उदाहरण बना सकते हैं। और उदाहरण का उपयोग करें और उस पर additem कॉल करें। और फिर आपकी अपेक्षा में नियंत्रक उदाहरण पर आइटम संपत्ति की जांच करें .. – PSL

+0

धन्यवाद, आपकी सलाह ने वास्तव में मदद की! – Denis

उत्तर

17

बस एक जवाब में @ पीएसएल की टिप्पणी को खींचने के लिए, इस कोड मेरे लिए काम किया: एक फ़ाइल में

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

    beforeEach(module('app')); 

    var ExampleController; 

    beforeEach(inject(function ($controller) { 
    ExampleController = $controller('ExampleController', {}); 
    })); 

    it('should define foo', function(){ 
    expect(ExampleController.foo).toBeDefined(); 
    }); 
}); 
0

कॉपी निम्नलिखित कोड और फिर ब्राउज़र में एक फ़ाइल को चलाने के

<html> 
    <head> 
    <!-- Jasmine References --> 
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/jasmine.min.css"> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/jasmine.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/jasmine-html.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/boot.min.js"></script> 

    <!-- Angular and Angular Mock references --> 
    <script type="text/javascript" src="https://code.angularjs.org/1.4.0-rc.2/angular.min.js"></script> 
    <script type="text/javascript" src="https://code.angularjs.org/1.4.0-rc.2/angular-mocks.js"></script> 
    </head> 
    <body></body> 
    <script type="text/javascript"> 
    angular.module('calculatorApp', []).controller('CalculatorController', function CalculatorController() { 
     self = this; 
     self.sum = function() { 
      self.z = self.x + self.y; 
     }; 
    }); 

    describe('calculator: CalculatorControllerAs', function() { 

     beforeEach(module('calculatorApp')); 

     var CalculatorControllerAs; 
     beforeEach(inject(function(_$rootScope_, _$controller_){    
      var scope = _$rootScope_.$new(); 
      CalculatorControllerAs = _$controller_('CalculatorController', {$scope: scope}); 
     })); 

     describe('sum', function() { 
      it('1 + 1 should equal 2', function() {    
      CalculatorControllerAs.x = 1; 
      CalculatorControllerAs.y = 2; 
      CalculatorControllerAs.sum(); 
      expect(CalculatorControllerAs.z).toBe(3); 
      }); 

     }); 
    }); 
    </script> 
</html>