2016-11-01 4 views
2

Existe-t-il des pratiques, des cadres ou des modèles communs pour le test unitaire du code basé sur office.js? Étant donné le grand nombre de composants dans le modèle d'objet thr, il est impossible de se moquer des appels à office.js. Y a-t-il quelque chose comme un lanceur de karma pour lancer le code de test dans une application de volet de tâches de conteneur de test? Quelqu'un a-t-il mis au point un moyen efficace de tester le code qui interagit avec office.js?Comment testez-vous le code de l'application office.js?

Répondre

0

Voici ce que je fini par faire:

  1. Ajout d'un nouveau projet App volet des tâches à la solution
  2. Inclus Jasmine autonome zip de https://github.com/jasmine/jasmine/releases
  3. Made Manifest de TaskPane application Source Point d'emplacement à la SpecRunner.html
  4. Modifié boot.js pour remplacer l'exécution des spécifications de test sur window.load à exécuter sur Office.initilize.
1

Je pense que vous devriez tester le code basé sur Office.js de la même manière que pour un code javascript "standard". En effet, Office.js est juste une autre dépendance javascript comme JQuery etc.

Bien sûr, vous ne devriez pas inclure Office.js dans votre page de test et remplacer l'objet Office par un faux. Vous pouvez jeter un oeil à Sinon Js un cadre de moquerie javascript. Lorsque vous écrivez un test unitaire, vous isolez un morceau de code (une classe ou un module) appelé System Under Test (SUT). Si vous avez basé votre addin sur un framework d'application Single Page tel que Angular, un SUT peut être un contrôleur. Ensuite, vous pouvez injecter l'objet Office en tant que dépendance, dans réel contexte ce sera le véritable Office à partir de Office.js. En test, ce sera un simulacre.

+0

En théorie, oui, c'est ainsi que nous le ferions. Cependant, si vous prenez par exemple le code à https://github.com/OfficeDev/office-js-docs/blob/master/docs/excel/build-your-first-excel-add-in.md se moquer des objets Office finirait par être une quantité excessive de travail. Vous devez simuler un classeur, une feuille, une gamme, des graphiques et tous les sous-objets. Donc, se moquer ne semble pas être une option. Tout comme les tests unitaires de jquery ne créent pas de DOM simulé mais s'exécutent sur une page HTML, j'imagine que les tests basés sur Office.js doivent s'exécuter sur une application de volet de tâches de conteneur. – Sameera

+0

@Sameera Si vous ne faites que des tests unitaires (pas de tests d'intégration) vous n'avez pas besoin de tout mocker, juste les méthodes/propriétés d'Office utilisées par votre SUT. Cela ne devrait pas être une grande source de travail ... –

+0

@Sameera, J'ajouterais à cela que de façon réaliste, ce que je ferais est d'écrire des fonctions autonomes qui acceptent les entrées/sorties - et de les tester unitairement, Office.js complètement de côté . Et puis j'aurais un autre ensemble de tests d'intégration qui fonctionnent à l'intérieur d'Excel, et sont aussi proches des interactions utilisateur que possible, modulo piloté par programme au lieu de piloté par interface utilisateur –