Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tests Angular JS & Jasmine

    26 juillet 2017 à 12:26:36

    Bonjour,

    Je crée actuellement un petit site, avec en front-end Angular JS et en back-end j'ai fais une API REST en Node JS. Je souhaite maintenant ajouter des tests sur mon controller en Angular, afin de vérifier que je traite correctement les infos que je récupère.

    Petit exemple:

    $scope.User_Ctrl_get_auth = function(success, failure)
    {
    	$http.post("/auth", { user_name : $scope.co_user.name,
    							user_password : $scope.co_user.password })
    		.then(function (response)
    		{
    			if (response.data.success == false)
    			{
    				$scope.user = undefined;
    				if (failure)
    					failure(response);
    			}
    			else
    			{
    				$scope.user = response.data.user;
    				$scope.user["token"] = response.data.token;
    				if (success)
    					success(response);
    			}
    		},
    		function fail(response)
    		{
    			$scope.user = undefined;
    			if (failure)
    				failure(response);
    		});
    }

    J'ai cette fonction, qui envoie une requete à /auth pour s'authentifier. Et donc je veux faire mes tests pour etre sure qu'avec un mauvais mdp, ou un  mauvais pseudo, $scope.user reste bien à undefined, et que quand les deux existent, c'est bon, et les infos sont bien mises dans $scope.user. La base.

    J'ai commencé à utiliser Jasmine pour faire mes tests, ca ressemble a peu pres à ça:

    describe("Authentification", function()
    {
    	it("should fail if the user name and password are empty", function(done)
    	{
    		$scope.User_Ctrl_get_auth();
    		setTimeout(function()
    		{
    			expect($scope.user).toBe(undefined);
    			done();
    		}, 500);
    	})

    Sauf que ça ne fonctionne pas :/ J'ai essayé en utilisant $httpBackend, dans le genre :

    $httpBackend.when('POST', "/auth").respond({user : {name: "test", _id: 1}, token: "tututut", success: true});
    

    Le problème c'est que je ne veux pas simuler la reponse de ma requete, j'aimerais bien qu'il la fasse vraiment, et je ne trouve pas le moyen de le faire. J'ai vu qu'il y avait d'autres framework permettant de tester les reponses d'une requete, mais encore une fois ce n'est pas cela que je cherche à faire.

    Suis-je en train de brasser du vent en essayant de faire quelque chose qui n'est pas "possible" avec les outils genre Jasmine et tout? J'ai l'impression d'etre en train de vouloir faire deux choses en meme temps, qui ne sont pas combinables.

    Merci d'avance pour vos réponses :) si vous souhaitez plus de précisions n'hésitez pas à me dire quels points sont obscurs.

    Bonne journée!

    PS: pardon pour les accents, j'ai un clavier qwerty et la flemme... 'u'

    -
    Edité par Aoi Sora 26 juillet 2017 à 12:29:31

    • Partager sur Facebook
    • Partager sur Twitter

    Tests Angular JS & Jasmine

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown