2012-12-16 1 views
0

J'ai écrit une méthode javascript qui modifie la valeur d'une suggestion sur un clic d'une image.Jasmine testcase

function startDestinationF(a) { 
var startDestination = document.getElementById('startDestination'); 
startDestination.selectedIndex = (a);} 

Maintenant, je dois écrire un testcase jasmin pour vérifier si cette méthode fonctionne vraiment, mais je ne suis pas vraiment.

J'ai essayé:

describe("Change onclick the value of the drop down menu", function() { 

var startDestination; 

beforeEach(function() { 
    startDestination = document.getElementById('startDestination'); 
    }); 

it("should change the value", function() { 
    expect(startDestinationF(3)).toBe(startDestination.selectedIndex==3); 
});}); 

mais il dit: "Impossible de lire la propriété 'selectedIndex' de null". Je suis un débutant sur ce domaine et je pourrais vraiment besoin d'aide ...

grâce

Répondre

1

Vous devez avoir et élément avec id startDestination dans votre DOM.

Deux façons d'y parvenir:

  • hardcode l'élément dans l'élément de corps de SpecRunner.html
  • Créer l'élément avec JavaScript et l'ajouter au DOM avant d'exécuter ce test.
0

Comme avec Jasmine, il est crucial de créer l'élément avec ID dans DOM. Il y a plusieurs façons que vous pouvez faire cela et la façon dont je fais est d'utiliser jasmine-fixture

affix('#startDestination') --> This will create this in DOM <div id="startDestination"> 

Si vous avez besoin d'avoir le type spécifique d'entrée, vous pouvez le faire aussi.

0

Ceci est une façon de le faire et c'est normalement comme cela que je le fais. Je pris la liberté d'utiliser jQuery pour cette :)

est ici un plunkr de travail: http://plnkr.co/edit/93dyzvxa82sFWWFZ6NTi?p=preview

describe('test suite', function(){ 
    // this here represents your global function 
    // I've added this here for the purpose of this demo 
    function setValue(a) { 
     $('#name').val(a); 
    }  

    beforeEach(function(){ 
     this.element = $('<input id="name" type="text" />'); 
     this.element.appendTo('body'); 
    }); 

    // clean up 
    afterEach(function(){ 
     this.element.remove(); 
    }); 

    it('should change the value', function(){ 
     //when 
     setValue('Alex Baur'); 

    // then 
    expect(this.element.val()).to.Equal('Alex Baur'); 
    }); 
}); 
0

vieille question, mais au cas où quelqu'un trouveront

it("should work", myTestFunction.bind(this, 'param1','param4')); 
it("should work", myTestFunction.bind(this, 'param2','param3')); 

function myTestFunction(param1, expected){ 
    expect(param1).toBe(expected); 
} 

i utilise se lient à faire des copies de ma fonction avec les paramètres nécessaires