Así que soy nuevo en todo lo relacionado con las pruebas (he sido una de esas personas que ha dicho 'Debería escribir pruebas unitarias ...' pero nunca terminé haciéndolo: - pag). Ahora estoy escribiendo pruebas unitarias para este proyecto. Estoy usando testacular + jazmín, con browserify para compilar cosas. No tuve problemas hasta que comencé a tratar de hacer muchas cosas de inyección AngularJS.AngularJS - pruebas básicas con inyección
Ahora mismo simplemente estoy tratando de hacer una prueba de ng-model para entenderlo.
tengo un archivo testacular.conf que incluye todo lo necesario:
files = [
'../lib/jquery.js',
'../lib/angular.js',
'./lib/jasmine.js',
'./lib/angular-mocks.js',
JASMINE_ADAPTER,
'./tests.js' //compiled by browserify
];
he definido mi controlador (MainCtrl.coffee)
MainCtrl = ($scope, $rootScope) ->
$scope.hello = 'initial'
module.exports = (angularModule) ->
angularModule.controller 'MainCtrl', ['$scope', '$rootScope', MainCtrl]
return MainCtrl
y tengo mi propia prueba: (_MainCtrlTest. café, en el mismo directorio que MainCtrl.coffee)
testModule = angular.module 'MainCtrlTest', []
MainCtrl = require('./MainCtrl')(testModule)
describe 'MainCtrlTest', ->
scope = null
elm = null
ctrl = null
beforeEach inject ($rootScope, $compile, $controller) ->
scope = $rootScope.$new()
ctrl = $controller MainCtrl, $scope: scope
elm = $compile('<input ng-model="hello"/>')(scope)
describe 'value $scope.hello', ->
it 'should initially equal input value', ->
expect(elm.val()).toBe scope.hello
it 'should change when input value changes', ->
scope.$apply -> elm.val('changedValue')
expect(scope.hello).toBe elm.val()
La prueba falla inmediatamente, con el pulgar ut's elm.val() que vuelve en blanco, y scope.hello que devuelve el valor previsto ('initial', establecido en MainCtrl.coffee)
¿Qué estoy haciendo mal aquí?
Gracias Vojta. Funciona ahora :-) Sí, solo estaba tratando de hacer una prueba angular básica para entender cómo hacer la inyección y la instancia del controlador dentro de una prueba. Todo es realmente simple, lo cual es genial. –