2016-01-29 38 views
0

我有一個角度應用程序(使用AngularAMD/RequireJS),並將設計轉換爲使用角度材質。我有一個使用md-svg-srcmd-icon的工具欄指令。單元測試失敗「TypeError:使用md-icon時無法讀取未定義的屬性」元素「

故障運行toolbar-directive_test.js文件。

起初它一直抱怨「Unresolve GET request images/icon.svg」。我決定測試設置中使用:

$httpBackend.whenGET(/\.svg$/).respond(''); 

現在如果我運行使用fdescribe(...)所有的測試都通過了該測試文件。

但是,如果我運行所有應用程序測試(在該工具欄測試文件中沒有fdescribe),它們由於md圖標而出現故障。我得到的錯誤出現在另一個測試文件上:

TypeError: Cannot read property 'element' of undefined 

堆棧跟蹤沒有給出什麼導致它的任何指導。只提到angular-mocks.js,然後在出現錯誤的測試文件中隨機斷言。如果我的文件xdescribe顯示element of undefined錯誤,則下一個測試文件將失敗並顯示此錯誤。

如果我在toolbar-directive_test.js文件(使用md-icon的文件)上使用xdescribe,則所有測試都通過。

如果我運行包括toolbar-directive_test.js文件在內的所有測試,但是我從模板中刪除了所有md-icon實例,所有測試都通過了。

我試過包括ngMaterial-mocks包在我的測試中,並沒有做任何事情。但總的來說,我沒有使用該包(但我使用的是ngMocks)。

關於如何調試的建議?

+1

這只是一種猜測,但也許'undefined'指SVG​​本身。嘗試傳回'',看看它是否有什麼不同。 –

+0

@Widget是的工作,謝謝。 – ngDeveloper

回答

0

由於@Widget建議,這個工程

$httpBackend.whenGET(/\.svg$/).respond('<svg></svg>'); 

如果這沒有工作:

$httpBackend.whenGET(/\.svg$/).respond(''); 
相關問題