unitarias unit test run pruebas karma hacer como unit-testing angularjs

unit-testing - pruebas - run unit test angular



Pruebas de unidad de controlador AngularJS-servicios de inyección (1)

simplemente agregue beforeEach(module(''myApp.services'')) a su bloque de descripción. Esto cargará el módulo de servicios con el servicio "versión" en el inyector de prueba y eso lo pondrá a disposición de su prueba.

Una pregunta con suerte simple acerca de las pruebas unitarias AngularJS. Tengo un controlador que usa un servicio simple (adaptado del proyecto de semilla angular)

services.js:

angular.module(''myApp.services'', []).value(''version'', ''0.1'');

controllers.js:

function MyCtrl1($s, version) { $s.version = version; } MyCtrl1.$inject = ["$scope","version"];

Esto funciona muy bien en mi aplicación. Sin embargo, tengo problemas para crear el controlador en el trabajo del marco de prueba de la unidad. No puedo entender cómo inyectar el servicio de ''versión'' (o crear una instancia) y pasarlo a la fábrica de $ controller (). ¡Supongo que eso es lo que quiero hacer! Aquí está la especificación básica:

controllerSpec.js :

beforeEach(inject(function($rootScope, $controller) { scope = $rootScope.$new(); // how about version service? ctrl = $controller(MyCtrl1, {$scope: scope, /* version: <where from?> */}); })); it(''Version should be 0.1 ...'', function() { expect(scope.version).toBe(''0.1''); });

Ejecutar el arnés de prueba rinde: > test.sh

... failed (3.00 ms): Error: Error: Proveedor desconocido: versionProvider <- version Error: Desconocido provider: versionProvider <- version

He intentado varias cosas con $ injector / $ provider y module () pero fue en vano. Estoy seguro de que la respuesta es simple, pero no puedo verlo.