测试简单脚本时出现茶匙错误

时间:2015-12-11 00:14:36

标签: jasmine teaspoon

我正在测试代码逻辑:

handleOnMediaPlaying: function(event){
  // body...
  if(isAd){
    if(event.data.percentComplete >= 25 && !firstQuartileFlag){
      firstQuartileFlag = true;
    }
    if(event.data.percentComplete >= 50 && !midpointflag){
      midpointflag = true;
    }
    if(event.data.percentComplete >= 75 && !thirdQuartileFlag){
      thirdQuartileFlag = true;
    }
  }
},

函数'handleOnMediaPlaying'位于对象pdkHandler中。此外,在pdhHandler中还有另一个函数handleOnMediaStart,其中我定义变量isAd(如果media是广告),firstQuartileFlag(设置为false),midpointflag(设置为false)和thirdQuartileFlag(设置为false)。 我已经写了相同的规范,但它失败并出现错误,说“预期错误为真”。以下是规格......

describe(“handleOnMediaPlaying”,function(){

beforeEach(function(){
  isAd = true;
  firstQuartileFlag = false;
  midpointflag = false;
  thirdQuartileFlag = false; 
  spyOn(pdkHandler, 'handleOnMediaPlaying');
});

it('sets firstQuartileFlag to true on percentComplete = 26 ', function(){
  var eventAd = {
    data: {
      percentComplete: 26
    }
  };
  pdkHandler.handleOnMediaPlaying(eventAd);
  expect(firstQuartileFlag).toBe(true);
});

it('sets midpointflag to true ', function(){
  var eventAd = {
    data: {
      percentComplete: 50
    }
  };
  pdkHandler.handleOnMediaPlaying(eventAd);
  expect(midpointflag).toBe(true);
});


it('sets thirdQuartileFlag to true ', function(){
  var eventAd = {
    data: {
      percentComplete: 76
    }
  };
  pdkHandler.handleOnMediaPlaying(eventAd);
  expect(thirdQuartileFlag).toBe(true);
});

});

我不知道为什么一切都很简单就失败了。请帮忙。

1 个答案:

答案 0 :(得分:0)

我想出了这个问题,spyOn(pdkHandler,' handleOnMediaPlaying');方法持有函数handleOnMediaPlaying的执行,因此该值未设置为预期的true。 希望这有助于像我这样的新手。