2017-02-17 2 views
0

Je construis une bibliothèque qui utilise le backbone comme base. Ma bibliothèque a une classe View, qui est une extension de Backbone.View. Il a un élément HTML comme une propriété de celui-ci. J'ai un tas de nouvelles fonctions sur la vue et je veux les tester avec stagiaire.Comment tester une bibliothèque de vues dans intern.js?

Le problème est que je ne peux pas trouver un moyen de référencer le DOM de interne lui-même. La seule façon que je peux voir pour que cela fonctionne est d'ouvrir une URL distante d'une page HTML séparée, et d'interroger ce DOM avec leadfoot. Cette méthode semble idéale pour un site Web où vous allez sur des pages spécifiques pour tester votre site, mais j'essaye de construire une bibliothèque, il semble donc inutile d'avoir des pages séparées juste pour tester les fonctionnalités principales d'une bibliothèque.

Existe-t-il un moyen de tester une bibliothèque de vues sans mettre tout votre code dans des fichiers html fictifs à ouvrir avec leadfoot?

Répondre

1

Bien sûr, vous avez quelques options, qui impliquent toutes deux l'écriture de tests unitaires (pas de tests fonctionnels). L'un consiste à exécuter des tests unitaires directement dans un navigateur à l'aide du client.html de Intern, l'autre consiste à les exécuter dans un navigateur à l'aide de WebDriver (intern-runner). Vos tests unitaires chargeront toutes les classes que vous essayez de tester, instancieront une instance d'entre eux, feront des assertions, etc. Puisque vos tests unitaires s'exécuteront dans un navigateur, ils auront accès au DOM.

Notez que vos tests ne chargeront pas les pages de test, ils chargeront les modules de code. Donc, un test pourrait ressembler à:

define([ 
    'intern!object', 'intern/chai!assert', 'app/View' 
], function (registerSuite, assert, View) { 
    var view; 

    registerSuite({ 
     name: 'app/View', 

     afterEach: function() { 
      // cleanup the view after each test 
      view.remove(); 
      view = null; 
     }, 

     someTest: function() { 
      var view = new View(); 
      // run tests on the view 
     } 
}); 

Pour exécuter vos tests en utilisant WebDriver, dans la liste suites plutôt que functionalSuites dans votre config stagiaire, puis exécutez Stagiaire en mode WebDriver (intern-runner ou intern run -w).

Pour exécuter vos tests dans le client du navigateur, démarrez un serveur statique basé dans votre répertoire de projet (intern serve si vous utilisez-cli stagiaire), ouvrez un navigateur, et accédez à http://localhost:<port>/node_modules/intern/client.html?config=tests/intern (en supposant que votre configuration de test est à tests/intern.js).

+0

Fonctionne bien! Merci! –