Question

Hé, j'ai besoin d'aide avec mon service de test.

J'ai ce service : MonService.js

Et ce contrôleur :

angular.module('MyControllers', [])

.controller('MyCtrl2', ['$scope', 'FnEncode', function ($scope, FnEncode) {

        $scope.encoded1 = "";
        $scope.encoded2 = "";
        $scope.encoded3 = "";

        $scope.encode1 = function() {
            $scope.encoded1 = FnEncode.encodeUUI(FnEncode.encodeFunctionalNumber($scope.numberToEncode));
        };

        $scope.encode2 = function() {
            $scope.encoded2 = FnEncode.encodeUUI(FnEncode.encodeFunctionalNumber($scope.numberToEncode)+
                FnEncode.encode2($scope.EncodeWith2));
        };

        $scope.encode3 = function() {
            $scope.encoded3 = FnEncode.encodeUUI(FnEncode.encodeFunctionalNumber($scope.numberToEncode)+
                FnEncode.encode3($scope.EncodeWith3));
        };
    }]);

Le service fait essentiellement lorsque j'entre 123 dans un champ de texte, il me renvoie 00050221F3, où les premiers 00 sont encodeUUI.J'ai testé quelque chose comme ceci mais il est indiqué Impossible de lire la propriété encodée1 :

'use strict';

describe('My services', function() {

    beforeEach(module('myApp'));

    beforeEach(module('MyServices'));

    describe('MyCtrl2', function() {

       var scope, ctrl;
        beforeEach(inject(function($rootScope, $controller) {
            scope = $rootScope.$new();
            ctrl = $controller('MyCtrl2', {$scope: scope});
        }));

        it('should output: ', function(scope) {
            expect(scope.encoded1.toBe("00050221F3"));     
        });
    });
});

J'espère que quelqu'un pourra me dire où je fais mal ?

Était-ce utile?

La solution

Vous n'appelez pas votre fonction pour coder la valeur, essayez :

it('should output: ', function() {
     scope.numberToEncode = "123";
     scope.encode1();
     expect(scope.encoded1.toBe("00050221F3"));     
});

Cependant, ce n’est pas ainsi que nous devrions tester le service.Pour tester unitairement le service, nous testons chaque fonction du service séparément.

Ce type de test pour vérifier le fonctionnement du scope.encode1 n'est pas non plus correct.Nous devrions nous moquer du FnEncode et vérifie que FnEncodeLes fonctions de ont été appelées dans l'ordre attendu.

Pour tester votre service, vous devez faire quelque chose comme ceci :

'use strict';

describe('My services', function() {

    beforeEach(module('myApp'));

    beforeEach(module('MyServices'));

    describe('MyCtrl2', function() {

        var encode;
        beforeEach(inject(function(FnEncode) {
            encode = FnEncode; //inject your service and store it in a variable
        }));

        //Write test for each of the service's functions

        it('encode Functional Number: ', function() {
            var encodedValue = encode.encodeFunctionalNumber("123");
            expect(encodedValue).toBe("00050221F3");  //replace 00050221F3 with your expected value
        });

        it('encode UUI: ', function() {
            var encodedValue = encode.encodeUUI("123");
            expect(encodedValue).toBe("00050221F3");  //replace 00050221F3 with your expected value
        });
    });
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top