2016-02-28 89 views
0

我創建了有一對夫婦孤立作用域屬性的手錶定製指令,這裏是有關的代碼:爲什麼指令單元測試中的元素範圍爲空?

scope.$watchGroup(['repairer', 'initial'], function() { 

      scope.Repairer = null; 
... 

      scriptingService.getScript(request).then(function (scripts) { 
          scope.scripts = scripts; 
         }); 

我寫了幾個測試,但他們沒有工作,這是其中之一:

it('should Repairer be 2', function() { 

    scope.$apply(function() { 
     scope.initial = 2; 
    }); 

    expect(element.isolateScope().Repairer).toEqual(2); 

    }); 

但我得到一個錯誤:

TypeError: Cannot read property 'Repairer' of undefined 

我怎樣才能讓測試工作?看起來指令在某種程度上不在測試中運行。

這裏是一個plunkerref:http://plnkr.co/edit/0R6KXp86BXFzhPRhT98S?p=preview

+0

我已經在你的代碼發現一個SMaL公司的錯誤(聲明$範圍,但使用範圍),但由於某種原因你鏈接功能根本不叫。 – ronapelbaum

回答

0

問題: 1.您嘗試$編譯範圍,whicht沒有HTML的elemet,因爲你的模板是 ''。 (你用$ httpBackend嘲笑它)。

// templateUrl: 'components/directives/scripting/scripting.html', 
  • 你需要模擬你的服務爲每一個測試:

    spyOn(scriptingService, "getScript").andReturn(qq.when({})) 
    
  • 你有一個語法錯誤(聲明$範圍,但使用範圍):

    鏈路:功能(範圍,元件,ATTRS){

     var visibleScript = 0; 
         scope.isHidden = false; 
    
         scope.$watchGroup(['repairer', 'initial'], function() { 
    

    ...

  • 檢查了這一點:

    http://plnkr.co/edit/AnqBx4Z6PuRXElwXA1Bm?p=preview

    +0

    真棒謝謝堆 –

    +0

    嗨,羅恩,我取消了它應該在的指令中的templateUrl位:)但現在我得到一個錯誤: 無法讀取屬性Repairer的undefined。我以爲我在測試中用WhenGet語句嘲笑模板? –

    +0

    btw Ron我很好奇你是如何調試karmine jasmine的錯誤的?我很難找出問題所在。 –

    相關問題