2 votes

Test unitaire d'un contrôleur AngularJS avec CoffeeScript et Karma

Je suis novice dans le concept des tests unitaires et j'essaie de mettre en place un test simple. La plate-forme sur laquelle je travaille exige que tout le JavaScript soit d'abord écrit en CoffeeScript. J'ai lu de nombreux exemples sur la façon d'y parvenir, mais mes tests échouent constamment.

Voici à quoi ressemble mon contrôleur :

'use strict'

angular.module('test')
  .controller 'BasicController', ['$scope', '$location', ($scope, $location) ->

     $scope.page.title = "Page Title"

     $scope.$watch(
       () ->
         return $location.url()
     )

  ]

Voici à quoi ressemble mon script de test :

'use strict'

 describe "The Basic Controller", ->

   beforeEach(module('test'))

   scope = {}
   location = {}
   ctrl = {}

   beforeEach inject ($rootScope, $controller, $location) ->
     scope = $rootScope.$new()
     location = $location
     ctrl = $controller("BasicController", {$scope: scope})

   it "should have the correct title", ->
     expect(scope.page.title).toBe("Page Title")

J'utilise PhantomJS et le message d'erreur que j'obtiens est que l'objet scope.page.title n'est pas défini. Je ne comprends pas pourquoi cela se produit. Je donne à cette variable la valeur que le test doit vérifier et je ne comprends pas pourquoi il ne passe pas. Toute aide ou conseil serait grandement apprécié. Je ne sais pas si je fais une erreur dans ma syntaxe CoffeeScript (je préférerais coder en JavaScript) ou si j'oublie complètement quelque chose.

1voto

Paul Sweatte Points 8668

Comme indiqué ci-dessus :

J'ai trouvé la solution... l'objet page que j'essayais de référencer était déclaré ailleurs. Cet exemple a été extrait d'une partie d'une plateforme sur laquelle plusieurs développeurs travaillent. La solution consistait simplement à définir l'objet page comme vide et le test a réussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X