Angular js unité de test de la maquette du document

Je suis en train de tester angulaire de service qui effectue des manipulations du DOM via $document service avec le jasmin.
Disons simplement, il ajoute certains directive de la <body> élément.

Un tel service pourrait ressembler à

(function(module) {
    module.service('myService', [
        '$document',
        function($document) {
            this.doTheJob = function() {
                $document.find('body').append('<my-directive></my directive>');
            };
        }
    ]);
})(angular.module('my-app'));

Et je veux tester de cette

describe('Sample test' function() {
    var myService;

    var mockDoc;

    beforeEach(function() {
        module('my-app');

        //Initialize mock somehow. Below won't work indeed, it just shows the intent
        mockDoc = angular.element('<html><head></head><body></body></html>');

        module(function($provide) {
            $provide.value('$document', mockDoc);
        });
    });

    beforeEach(inject(function(_myService_) {
        myService = _myService_;
    }));

    it('should append my-directive to body element', function() {
        myService.doTheJob();
        //Check mock's body to contain target directive
        expect(mockDoc.find('body').html()).toContain('<my-directive></my-directive>');
    });
});

La question est donc quelle serait la meilleure façon pour créer fictif?

Tests avec de vrais document va nous donner beaucoup de peine nettoyage après chaque test et ne pas ressembler à un chemin pour aller avec.

J'ai aussi essayé de créer un nouveau document de l'instance, avant chaque test, pas encore fini avec les différents échecs de.

La création d'un objet comme ci-dessous et vérifier whatever variable fonctionne mais est très moche

var whatever = [];
var fakeDoc = {
    find: function(tag) {
              if (tag == 'body') {
                  return function() {
                      var self = this;
                      this.append = function(content) {
                          whatever.add(content);
                          return self;
                      };
                  };
              } 
          }
}

J'ai l'impression que je suis absent quelque chose d'important ici et de faire quelque chose de très mauvais.

Toute aide est très appréciée.

OriginalL'auteur Alexander Nyrkov | 2013-12-01