2013-06-14 15 views

risposta

5

per quanto ne so, si può provare 2 approcci:

  1. utilizzare il servizio $compile, e compilare il modello con adeguata $scope (non dimenticare co tutti $scope.$apply() dopo la compilazione). Grunt's html2js è un ottimo strumento per pre-elaborare i tuoi template e averli aggiunti a $ templateCache di angular prima dell'esecuzione del test. Vedere la homepage del progetto a https://npmjs.org/package/grunt-html2js

  2. utilizzo del servizio $controller, e iniettare manualmente FormController al $scope. Ma dovresti anche iniettare tutto il NgModelControllers che normalmente avresti nel tuo modello.

5

Che ne dite di questo per beffardo una forma AngularJS e quindi testare il modulo $ sporco e $ valida Stato:

// example usage of html form element 
<form data-ng-submit="update()" name="optionsForm" novalidate="novalidate"> 

// example usage html button element 
<button type="submit" ng-disabled="!canSave()">Update Options</button> 

// Controller check if form is valid 
$scope.canSave = function() { 
    return $scope.rideshareForm.$dirty && $scope.rideshareForm.$valid; 
}; 

// Unit Test 

// scope is injected in a beforeEach hook 
it('$scope.canSave returns true if an options form is valid or false if non-valid', function() { 

// mock angular form 
scope.optionsForm = {}; 

// valid form 
scope.optionsForm.$dirty = true; 
scope.optionsForm.$valid = true; 
expect(scope.canSave()).toBe(true); 

// non-valid form 
scope.rideshareForm.$dirty = true; 
scope.rideshareForm.$valid = false; 
expect(scope.canSave()).toBe(false); 

}); 
Problemi correlati