0

當我用科爾多瓦和離子測試我的混合應用程序構建時,我有奇怪的發生。Karma-jasmine UncaughtReference錯誤狀態欄未定義

我使用karma-jasmine進行單元測試。如果我運行我的測試文件sparately他們成功。如果我將它們中的三個一起運行,它們仍然會成功。如果將其全部包含在karma(path/tests/*。js)中,則3箇中的5個會成功併發生以下錯誤: 「StatusBar」未定義。

StatusBar是cordova plugsin「cordova-plugin-statusbar」。我想知道爲什麼它只出現在一起測試所有文件,而不是一個接一個。我已經嘗試對測試文件重新排序,但是在第三個測試文件後它們總是失敗。

每次測試開始時,app.js都會被初始化並啓動。我不知道這可能是一個問題。

有什麼建議嗎?

回答

0

問題是,我沒有嘲笑我的角應用程序模塊。 在我的模塊的運行功能中,我得到$ ionicPlatform來監聽「deviceReady」事件。在這種情況下,我訪問了狀態欄等cordova插件。但是由於我沒有使用它的插件來模擬應用程序模塊,只要deviceready事件被觸發,測試就開始失敗。

爲了解決這個問題,我剛定義了一個全局變量「testEnvironment」,由於我不想在模塊中測試我的run方法,我只是檢查testEnvironment是否爲true並退出run方法。我定義了全局變量,並在我開始進行單元測試後立即進行設置。

我希望有類似問題的人認爲這有幫助。