2017-05-22 52 views
2

我的組是建築用下面的前端棧的應用程序:NYC覆蓋顯示不正確的行號

VueJS, 的WebPack 2.2, AvaJS(單元測試), NYC(伊斯坦布爾),用於測試覆蓋

我們從vue-cli開始爲我們的項目創建一個Webpack模板。大部分情況都很順利。我們能夠單獨使用Ava進行單元測試.vue使用vue-node的組件文件但是,通過nyc生成的測試覆蓋率報告存在問題。下面是定義了我們的的package.json文件有關紐約和AVA部分的片段:

"nyc": { 
"exclude": [ 
    "build", 
    "config", 
    "static", 
    "tests" 
], 
"extension": [ 
    ".js", 
    ".vue" 
] 
}, 
"ava": { 
"require": [ 
    "./tests/unit/helpers/setup.js", 
    "ignore-styles" 
] 
}, 

所有的測試順利通過。紐約市的報告顯示以下內容: nyc generated report

的問題是該行#S下揭祕線不存在上市。 .vue文件只有402行,所以我無法弄清楚nyc報告中這些行號是從哪裏來的。

任何幫助將不勝感激,並提前感謝您。

+0

你有[源地圖(https://github.com/avajs/AVA#代碼-C超齡)設置? –

+0

感謝您的回覆。是的,我看到了,但不知道該怎麼做。我之前也沒有意識到這是必要的我猜。這只是一個設置sourceMaps的問題:在package.json中的nyc配置文件中是否爲true?因爲我確實嘗試過,沒有運氣。 – user2360062

+0

我所知的所有信息我在那裏閱讀:確保您測試的代碼包含內聯源地圖或引用源地圖文件。如果你使用'babel-register',你可以在你的Babel配置中將'sourceMaps'選項設置爲'inline'。 –

回答

1

我有同樣的問題,你需要安裝babel-plugin-istanbul,用伊斯坦布爾覆蓋你的代碼。這個插件負責爲你的代碼獲取正確的sourceMap。所以你需要從nyc中禁用instrument和sourceMap。

npm install --save-dev babel-plugin-istanbul

添加上.babelrc這個插件只爲您的ENV測試。

{ 
    "env": { 
    "test": { 
     "plugins": [ "istanbul" ] 
    } 
    } 
} 

然後從nyc中禁用instrument和sourceMap。 babel-plugin-istanbul會照顧它。並且您的「要求」與babel-register結合使用。

"nyc": { 
    "exclude": [ 
    "build", 
    "config", 
    "static", 
    "tests" 
    ], 
    "extension": [ 
    ".js", 
    ".vue" 
    ] 
    "require": [ 
    "./tests/unit/helpers/setup.js", 
    "ignore-styles", 
    "babel-register" 
    ], 
    "sourceMap": false, 
    "instrument": false 
}, 

現在你應該可以獲得nyc的覆蓋。

NODE_ENV=test nyc ava

來源:

  1. https://www.npmjs.com/package/babel-plugin-istanbul
  2. https://github.com/istanbuljs/nyc#use-with-babel-plugin-istanbul-for-babel-support