2014-04-11 157 views
0

我有幾個QUnit測試成功運行,用於我們的擴展。Chrome擴展的單元測試代碼覆蓋率

我想收集代碼覆蓋率信息,並認爲我會使用blanket.js來這樣做。

然而,當我點擊「啓用覆蓋」按鈕,我看到在JavaScript控制檯幾個CSP違章消息:

Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'self' 

我已經嘗試將擴展更新的內容安全策略,將「不安全在線「和」不安全評估「。使用「不安全聯機」,Chrome不會加載擴展程序。而'unsafe-eval'選項不能解決問題。

下面是CSP的片段從我的manifest.json文件:

"content_security_policy": "default-src 'unsafe-inline' 'self'" 

有沒有辦法讓blanket.js成功的一款Chrome擴展程序運行?

如果沒有,Chrome擴展程序是否有替代blanket.js的選項?

我目前使用:

的Chrome 34 毯 - V1.1.5 QUnit v1.10.0

任何幫助,將不勝感激。

+0

部分回答:引用Chrome文檔「沒有放鬆對內嵌JavaScript執行限制的機制,特別是設置包含'不安全內聯'的腳本策略將不起作用。」所以你不能繞過非內聯約束。 – Xan

回答

1

您可以嘗試改變_addScript來實現:

function(data) { 
    (1,eval)(data); 
} 

並添加'unsafe-eval'到您的CSP。

+0

優秀。這樣可行!至少我得到了代碼覆蓋率結果。我仍然在控制檯中收到單個CSP違例消息。 – CyclingBloke

+0

我能夠通過在blanket.js文件中註釋掉第(4654)行修復第二個CSP違例: //body.appendChild(script); 並將其替換爲: (1,eval)(script.text); – CyclingBloke

相關問題