我有一個服務在上傳的文件上起作用。我有一個基本上傳的上傳(.xlxs)文件轉換爲工作簿的服務功能。我想爲這個特定的函數編寫測試用例。 (沒有上傳到服務器,但只是瀏覽器) 任何人都可以建議如何從單元測試場景內訪問測試文件(如test_something.xlxs)。我想讀取文件作爲二進制字符串,並將對象傳遞給服務方法。在Jasmine Karma測試中讀取文件
我使用的單元測試框架是Karma + Jasmine for angular。
我有一個服務在上傳的文件上起作用。我有一個基本上傳的上傳(.xlxs)文件轉換爲工作簿的服務功能。我想爲這個特定的函數編寫測試用例。 (沒有上傳到服務器,但只是瀏覽器) 任何人都可以建議如何從單元測試場景內訪問測試文件(如test_something.xlxs)。我想讀取文件作爲二進制字符串,並將對象傳遞給服務方法。在Jasmine Karma測試中讀取文件
我使用的單元測試框架是Karma + Jasmine for angular。
這是一種痛苦,因爲當你進入安全帶的時候,你在沙盒瀏覽器的土地上,你不能輕易地訪問外部文件。 Karma通過基本上創建一個僞裝的HTML頁面包裝器,通過PhantomJS,Jasmine等將其加載到瀏覽器中進行測試。當您的測試工具開始工作時,該瀏覽器已經運行,現在開始做出奇怪的事情爲時已晚在系統級別。
您可以解決這個問題的方法是使用Karma配置中的'files'鍵。你可以在這裏添加測試裝置,Karma會將它們發射到頁面中。當你進入二進制數據時,你必須做的是有一個構建任務把它轉換成Javascript可以容忍的東西。通常,您將製作一個包含轉義字符串(如Base64)的JSON文件,您可以將其解碼回原始數據。
https://github.com/karma-runner/karma-ng-html2js-preprocessor Karma的HTML2JS預處理器做了一些非常相似的事情,並且可能是一個很好的起點。它旨在讓您將HTML文件嵌入到測試工具中以用於各種目的,它通過執行相同的操作:在Karma啓動之前將它們編碼爲可嵌入的格式。使用相同的機制,你可以嵌入幾乎任何你想要的東西,如果你願意用一些預處理代碼彌合差距。
我將不得不把excel文件轉換成JSON第一?然後像這裏提到的那樣閱讀它? http://stackoverflow.com/questions/17370427/loading-a-mock-json-file-within-karmaangularjs-test – sriram
是的,無論如何這是常見的模式。儘管原始的XLS可能會令人沮喪,因爲一旦你編碼了它,那麼呢?你可以解碼它......但你不能用它調用Excel(除非你正在做一些奇怪的事情,比如從MSIE調用一個ActiveX對象?)。如果你想從原始JS訪問這個你有沒有考慮過CSV或類似的? –
Excel分析器部分很好。我已經有了一個Excel解析器,這是我想單元測試的。如果我們包含在Karma中,我會看到該文件將被提供。不能,我們只是直接從茉莉花訪問它? – sriram