Estoy trabajando en una aplicación de Rails 3.2 que utilizará AngularJS. Puedo hacer que Angular haga lo que necesito, pero estoy teniendo un momento muy difícil para averiguar cómo probar lo que estoy haciendo. Estoy usando guardia-jazmín para ejecutar las especificaciones de Jasmine usando PhantomJS.Cómo probar las directivas AngularJS
Aquí es el (relevante) html:
<html id="ng-app" ng-app="app">
<div id="directive-element" class="directive-element">
</div>
</html>
El javascript (en CoffeeScript) parece:
window.Project =
App: angular.module('app', [])
Directive: {}
Project.Directive.DirectiveElement =
->
restrict: 'C'
link: (scope, element, attrs) ->
element.html 'hello world'
Project.App.directive 'directiveElement', Project.Directive.DirectiveElement
El código anterior hace exactamente lo que se pretende hacer. Las pruebas son el problema. No puedo hacer que trabajen en absoluto. Esto es una cosa que había intentado. Publicar esto es principalmente para comenzar la conversación en alguna parte.
describe 'App.Directive.DirectiveElement', ->
it 'updates directive-element', ->
inject ($compile, $rootScope) ->
element = $compile('<div id="app" ng-app="app"><div id="directive'element" class="directive-element"></div></div>')
expect(element.text()).toEqual('hello world')
Como acotación al margen, soy nuevo en AngularJS, así que si hay algún mejores prácticas con respecto a los espacios de nombre, módulos, etc., que no estoy siguiendo, orientación sería apreciada.
¿Cómo obtengo una prueba para que esto funcione?
Dado que Plunker ya no parece funcionar, ¿tiene una versión funcional? La documentación sobre las directivas de prueba con Jasmine para AngularJS es súper mala y perjudicial para un ejemplo como el del plunker. – Philipp
OK, lo edité para dar enlaces a pruebas reales :-) –
¿Estás seguro de myElement.children(). Scope()? No funciona para mí = ( -> UPD: tuve que hacer $ scope. $ Apply() –