Función de enlace de directivas de inyección angular de karma en el alcance de la raíz -- javascript campo con angularjs campo con karma-runner camp Relacionados El problema

Karma Angular inject directives link function into root scope


0
vote

problema

Español

Hola, estoy probando una directiva llamada Controller así:

  beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {     $scope = $rootScope.$new();     $http = _$httpBackend_;      $controller('coreAppController', {$scope : $scope});      $http.flush(); }));   

El problema es que el controlador necesita acceder a algunas funciones dentro de las directivas link bloque. ¿Es posible inyectar esto en el alcance sin compilar la directiva completa?

Original en ingles

Hi I am testing a directives named controller like so:

beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {     $scope = $rootScope.$new();     $http = _$httpBackend_;      $controller('coreAppController', {$scope : $scope});      $http.flush(); })); 

The problem is the controller needs to access some functions within the directives link block. Is it possible to inject this into the scope without compiling the full directive?

        
       
       

Lista de respuestas

0
 
vote

Como he leído en sus comentarios, su Link -Function agrega las funciones que llama dentro de su controlador al scope . Esta no es realmente una arquitectura agradable, ya que un controlador de directivas generalmente se usa para permitir que varias directivas se comuniquen entre sí, por lo que de Link a Controller , no al revés. Si desea mantenerse al día con esto y necesita esa arquitectura, probablemente debería burlarse de las funciones que desea llamar desde la función de enlace, después de todo, es una prueba de unidad, por lo que solo debe probar las unidades más atmóticas y, por lo tanto, no necesitar toda la directiva. .

solo haz algo como

  beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {    $scope = $rootScope.$new();    $scope.MYSCOPEFUNCTION = jasmine.createSpy('MyFunctionMock');    $http = _$httpBackend_;     $controller('coreAppController', {$scope : $scope});     $http.flush(); }));   
 

As Ixc2xb4ve read in your comments, your Link-Function adds the Functions you call inside your Controller to the scope. This is not really a nice architecture, since a Directives Controller is usually used to let several directives communicate with each other, so from Link to Controller, not the other way around. If you wanna keep up with this and NEED that architecture, you should probably MOCK the Functions you wanna call from the link function - after all, its a Unit Test, so you should only test the most atmoic units and therefore dont need the whole directive.

Just do something like

beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {    $scope = $rootScope.$new();    $scope.MYSCOPEFUNCTION = jasmine.createSpy('MyFunctionMock');    $http = _$httpBackend_;     $controller('coreAppController', {$scope : $scope});     $http.flush(); })); 
 
 

Relacionados problema

0  TypeError: indefinido no es un objeto (evaluando 'screen.orientation.lock')  ( Typeerror undefined is not an object evaluating screen orientation lock ) 
Estoy probando la prueba de la unidad en el generador M. Inyecté $ alcance en el archivo de especificación de prueba, pero estoy enfrentando a este error cómo...

9  Testutils.simulate.keydown no funciona  ( Reacts testutils simulate keydown does not work ) 
Tengo muchos componentes en mi aplicación que responden a diferentes prensas clave, y hasta ahora, ninguna de mis pruebas que utilizan let fizzbuzz num = ...

1  Problema de pruebas de karma + jazmín cuando el fusible la aplicación angular inyecta el módulo  ( Karmajasmine testing issue when fuse angular app injects module ) 
y Configurar una prueba de karma + jazmín en mi aplicación de fusible (dentro de Dentfixels [DOT] COM / TEMAS / FUSE), según AngularJS + Gulp Project, con los...

0  ¿Cómo puedo escribir el resultado de las pruebas de la unidad de Karma a un archivo?  ( How can i write the outcome of karma unit tests to a file ) 
Tengo mi configuración de archivo karma.config con el karma-espec-reportero que imprime correctamente el resultado de todas las pruebas de la unidad a la cons...

1  Cómo hacer la solicitud AJAX con Karma  ( How to make ajax request with karma ) 
Tengo una prueba que llama una función que solicita un archivo CSV externo. Pero por alguna razón, no puedo usar un camino relativo. Por ejemplo, tengo que ha...

1  Se requiere la prueba de la prueba de NPM angular2, se requiere un shim de reflejo y metadatos cuando se usan decoradores de clase  ( Angular2 npm test throws reflect metadata shim is required when using class deco ) 
He creado un componente simple para mostrar los anuncios de DoubleClick con 2. Estoy tratando de publicarlo a NPM, y para hacerlo, me gustaría probarlo con ...

5  Generador angular de Yeoman, error de dependencia de Karma  ( Running yeoman angular generator karma dependency error ) 
Estoy tratando de ejecutar el generador import java.io.*; public class AddressBookIO { private static File addressBookFile = new File("address_book.txt"); p...

0  Los archivos no están cargando en karma (angularjs)  ( Files are not loading in karma angularjs ) 
Estoy tratando de probar un controlador simple en Angularjs, Pero los archivos para no obtener la carga en el navegador. Mis archivos son los siguientes. f...

0  ¿Cómo especificar un conjunto de pruebas al karma programáticamente?  ( How to specify a set of tests to karma programmatically ) 
así que la cosa es. Estoy construyendo un explorador de pruebas angulares. Soy capaz de ver todas las pruebas y ejecutarlas todas juntas usando el módulo de k...

5  Error de engendro en Enoent con NPM Install  ( Spawn enoent error with npm install ) 
Cada vez que intento ejecutar NPM Install i Obtenga un error en Enoent con el siguiente registro: 2563 error Error: spawn ENOENT 2563 error at errnoExc...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos