2017-03-13 26 views
3

我正在使用Jasmine作爲單元測試框架,並且我想知道如何知道vue是否正確安裝。是否有一個函數,來自VueJS的API,用於瞭解視圖狀態的收據?vue.js單元測試 - 安裝鉤子錯誤

實際上......單元測試正在通過,但在控制檯(終端或瀏覽器下)出現以下錯誤:錯誤日誌:'[Vue warn]:掛載鉤子錯誤:(找到xxxx) - ReferenceError:$未定義'

然後,我想我的單元測試失敗,而不是通過這種錯誤......?

下面是代碼的快照:

describe("location component tests suite",() => { 

    const getComponent = (data) => { 
     let vm = new Vue({ 
      template : "<div>" 
       + "<location" 
       + " :data='data'" 
       + " label='pick'" 
       + " placeholder='placeholder'" 
       + " required>" 
       + "</location></div>", 

      data: { 
       data 
      } 
     }); 

     return vm; 
    }; 

    it("Validate mount",() => { 
     const data= { 'data' : { 'value' : 'VUE'} }; 
     const vm = getComponent(data).$mount(); 
     expect(vm.$el.querySelector('div.location-wrapper').getAttribute('class')).toBe('location-wrapper'); 
     expect(vm.$el.querySelector('input').getAttribute('name')).toBe('pick'); 
    }); 
}); 

謝謝!

+0

''組件的代碼在這裏可能更相關。 – ceejayoz

+0

我不想知道錯誤來自哪裏......我只是想知道是否有方法知道在。$ mount()期間是否發生錯誤,因爲單元測試沒有失敗。 – Jorelia

+0

位置組件是一個複雜的組件,在這裏沒有真正的相關性......失敗的原因與$(JQuery)有關,因爲它不是構建組件的一部分。做一個導入解決了這個問題.... 我在找什麼,是一種在$。mount()過程中捕獲這種錯誤的方法,以使我的測試失敗而不是被傳遞。 – Jorelia

回答

1

您可能需要使用自v2.2.0以來引入的Vue.config.errorHandler API。

  1. 您可以將變量聲明爲錯誤拋出標誌(即errorThrown)。

    let errorThrown = false; 
    
  2. 定義的ErrorHandler功能,這樣,當它的觸發errorThrown將切換到true

    Vue.config.errorHandler = function (err, vm, info) { 
        console.log(info); 
        if(info.includes('mounted')) { 
        errorThrown = true; 
        } 
    }; 
    
  3. 檢查errorThrown在茉莉花使用expect API。

    expect(errorThrown).toBe(false); // Test will fail here 
    

檢查工作演示here
通過這種方式,掛載方法中發生的錯誤將被捕獲並且強制單元測試失敗。