0

我编写了一个 javascript 方法,可以在单击图像时更改建议框的值。

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

现在我必须编写一个茉莉花测试用例来检查这种方法是否真的有效,但我真的不明白。

我试过了:

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);
});});

但它说:“无法读取 null 的属性‘selectedIndex’”。我是那个领域的新手,我真的需要一些帮助......

谢谢

4

4 回答 4

1

您的 DOM 中必须有 id 为 startDestination 的元素。

实现此目的的两种方法:

  • 将元素硬编码到 SpecRunner.html 的主体元素中
  • 在运行该测试之前,使用 JavaScript 创建元素并将其附加到 DOM。
于 2012-12-17T09:45:37.677 回答
1

老问题,但万一有人会找到它

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

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

我使用 bind 用必要的参数复制我的函数

于 2016-10-03T15:04:14.427 回答
0

与 Jasmine 一样,您需要在 DOM 中创建具有 ID 的元素。有很多方法可以做到这一点,我的方法是使用jasmine-fixture

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

如果您需要特定类型的输入,您也可以这样做。

于 2012-12-27T19:21:10.913 回答
0

这是您可以做到的一种方式,这通常是我这样做的方式。我冒昧地为此使用了 jQuery :)

这是一个有效的 plunkr: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');
   });
});
于 2015-01-31T21:13:47.223 回答