unit tutorial test run karma and angularjs angularjs-scope jasmine karma-runner hottowel

tutorial - accediendo a $ scope desde el archivo de prueba de la unidad al usar la sintaxis vm "ControllerAs" de AngularJS HotTowel



run unit test angular (2)

Ah, obvio ahora ... Puedo acceder a la variable vm haciendo una referencia al controlador que se creó en la prueba:

it("should assign Dashboard as title", function () { var vm = controller("dashboard", { $scope: scope }); expect(vm.title).toBe("Dashboard"); });

Vea aquí, por ejemplo: http://www.johnpapa.net/angularjss-controller-as-and-the-vm-variable/

Como sugiere el título, estoy siguiendo este tutorial [ http://tech.pro/tutorial/1473/getting-started-with-angularjs-unit-testing] para configurar las pruebas unitarias y todo está bien EXCEPTO por el hecho Parece que no puedo acceder a la variable vm como mi $ scope .

dashboard.js

var controllerId = ''dashboard''; angular.module(''app'') .controller(controllerId, [''common'', ''datacontext'', dashboard]); function dashboard(common, datacontext) { var getLogFn = common.logger.getLogFn; var log = getLogFn(controllerId); var vm = this; vm.title = ''Dashboard'';

dashboard.Spec.js

describe("app module", function() { beforeEach(module("app")); describe("dashboard", function() { var scope, controller; beforeEach(inject(function($rootScope, $controller) { scope = $rootScope.$new(); controller = $controller; })); it("should assign Dashboard as title", function() { controller("dashboard", { $scope: scope }); expect(scope.title).toBe("Dashboard"); }); }); });

Lo que he intentado: funciona (la prueba pasa) cuando nombro ''$ scope'' directamente en las dependencias de los controladores y le asigno la propiedad "title". Sin embargo, me gustaría mantener el patrón como está.

También he intentado pasar $ scope directamente en dependencias y nombrar el parámetro del controlador como "vm" ...

El mensaje de prueba de falla de Karmas es: Esperado indefinido para ser ''Tablero''

agradecer cualquier ayuda!


también puedes hacer esto:

it("should assign Dashboard as title", function () { var controller = controller("dashboard as vm", { $scope: scope }); expect(scope.vm.title).toBe("Dashboard"); });