Cómo probar unitariamente la propiedad 'resolver' en un componente Modal Bootstrap de Angular-UI

ui.bootstrap.modal escribir una testing unitaria que confirme que la variable correcta se envía a la propiedad de ui.bootstrap.modal de ui.bootstrap.modal desde los componentes Bootstrap de ui.bootstrap.modal angular. Esto es lo que tengo hasta ahora:

 // Controller angular.module('app') .controller('WorkflowListCtrl', function ($scope, $modal) { // Setup the edit callback to open a modal $scope.edit = function(name) { var modalInstance = $modal.open({ templateUrl: 'partials/editWorkflowModal.html', controller: 'WorkflowEditCtrl', scope: $scope, resolve: { name: function() { return name; } } }); }; }); 

Merece la pena señalar que la propiedad resolve.name debe ser una function para que el componente resolve.name angular funcione correctamente. Anteriormente había intentado resolve: { name: name } pero esto no funcionó.

 // Unit Test describe('Controller: WorkflowListCtrl', function () { // load the controller's module beforeEach(module('app')); var workflowListCtrl, scope, modal; // Initialize the controller and a mock scope beforeEach(inject(function ($controller, $rootScope) { scope = $rootScope.$new(); modal = { open: jasmine.createSpy() }; workflowListCtrl = $controller('WorkflowListCtrl', { $scope: scope, $modal: modal }); it('should allow a workflow to be edited', function() { // Edit workflow happens in a modal. scope.edit('Barney Rubble'); expect(modal.open).toHaveBeenCalledWith({ templateUrl: 'partials/editWorkflowModal.html', controller: 'WorkflowEditCtrl', scope: scope, resolve: { name: jasmine.any(Function) } }); }); })); }); 

Por el momento, esto solo está comprobando que la propiedad resolve.name es una function, pero lo que realmente me gustaría hacer es afirmar que la function resolve.name devuelve Barney Rubble . Esta syntax obviamente no funciona:

 expect(modal.open).toHaveBeenCalledWith({ templateUrl: 'partials/editWorkflowModal.html', controller: 'WorkflowEditCtrl', scope: scope, resolve: { name: function() { return 'Barney Rubble'; } } }); 

Parece que de alguna manera quiero espiar la function resolve.name para comprobar que se llamó con Barney Rubble pero no puedo encontrar una manera de hacerlo. ¿Algunas ideas?

One Solution collect form web for “Cómo probar unitariamente la propiedad 'resolver' en un componente Modal Bootstrap de Angular-UI”

Así que he descubierto una forma de hacer esto.

Defina una function 'privada' en $scope :

 $scope._resolve = function(item) { return function() { return item; }; }; 

Modifique la function $scope original para llamar a este método 'privado':

 $scope.edit = function(name) { var modalInstance = $modal.open({ templateUrl: 'partials/modal.html', controller: 'ModalCtrl', scope: $scope, resolve: { name: $scope._resolve(name) } }); }; 

Actualice sus testings para simular esta function y devuelva el valor original, luego puede probar que se pasó correctamente.

 it('should allow a workflow to be edited', function() { // Mock out the resolve fn and return our item spyOn($scope, '_resolve').and.callFake(function(item) { return item; }); // Edit workflow happens in a modal. scope.edit('Barney Rubble'); expect(modal.open).toHaveBeenCalledWith({ templateUrl: 'partials/modal.html', controller: 'ModalCtrl', scope: scope, resolve: { name: 'Barney Rubble' } }); }); 
  • No se puede burlar de un module con bromas y hacer llamadas a funciones de testing
  • Prueba angular de 2 unidades no espera a que la promise regrese
  • ¿Cómo agregar un retraso antes de comenzar un caso de testing de Mocha?
  • GWT: ¿Mejor práctica para probar unidades / burlarse de los methods JSNI?
  • ¿Cómo accedo a los methods en React para testings unitarias?
  • Broma. ¿Cómo se burla de la console cuando es utilizada por una biblioteca de terceros?
  • MeteorJS: Cómo sobrescribir el método validado en testings unitarias
  • Cómo automatizar la testing de elementos de medios html5
  • usar el protractor para que el atributo desactivado del button no funcione
  • ¿Cómo ejecutar las testings unitarias Dojo DOH a través de Jenkins?
  • Cargando dependencies fuera del directory del proyecto en el interno
  • Prueba de unidad angular $ intervalo para una directiva de "reloj"
  • ¿Qué tipo de solución de testing unitaria para las routes en Ember.js?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.