2015-02-09 66 views
3

我有一個Angular控制器,它定義了超過50個字段名稱的數組。因爲輸入的id和ng-model都存在,所以這些都應該出現在HTML文件中。我想通過閱讀和解析HTML文件來測試我是否犯了拼寫錯誤。因爲我需要獲得數組,所以Karma + Jasmine測試看起來很理想(使用量角器我無法得到)。什麼是測試這個的好方法?在Karma + Jasmine測試中讀取HTML文件

對於FileReader$http.get都沒有輸入成功或錯誤函數,並與XMLHttpRequest我只是得到一個空字符串。

我已經添加了一行

pattern: 'app/views/*.html', watched: false, included: false, served: true} 

到karma.conf.js,我想讀的文件相匹配。

任何幫助,非常感謝。

回答

0

之後我有這樣的示例問題來調用「服務器」數據並且不使用模型服務。 我偶然看到這個條目: E2E mock $httpBackend doesn't actually passThrough for me

工作正常,用這個你可以使用$ http.get並檢查你的數據。

如果你有工作的承諾也試試這個:https://github.com/ThomasBurleson/jasmine-as-promised

+0

我不是做端到端的測試,也許我應該澄清一點。所以我不需要這個。我其實嘗試過,但並沒有解決我的問題。 – 2015-02-10 15:05:46

1

您可以用jasmine-jquery加載HTML的片段作爲燈具。不要想知道這個名字,這是因爲這個庫還增加了大量的custom jasmine matchers,它們與jQuery結合使用。

要使用它,在你的人緣配置文件中添加以下的files陣列:

// this is the path to your library if installed via bower 
'../bower_components/jasmine-jquery/lib/jasmine-jquery.js', 

// make the views available to the locally by karma started webserver 
{pattern: 'views/*.html', watched: true, served: true, included: false}, 

對於你的測試,您必須將路徑定義你的意見,並明確加載它們:

beforeEach(function() { 
    jasmine.getFixtures().fixturesPath = "base/views"; // path to your templates 
    jasmine.getFixtures().load('myHtmlSnippet.html'); // load a template 
}); 

這會將div加上id jasmine-fixtures直接加載到運行測試的瀏覽器的body中。裝入的夾具將被插入div#jasmine-fixtures。然後你可以簡單地通過jQuery或者香草javascript來訪問它們。

2

1.You可以使用下面的預處理器來渲染HTML

  • NPM安裝業力-NG-html2js預處理器--save-dev的 添加以下內容karma.config.js •

    ngHtml2JsPreprocessor:{ MODULENAME: '模板' },

2.使用$本身編譯你想測試的角度和克里特HTML的服務添加它到DOM。然後你可以對該HTML執行任何測試

var $body=$('$body'); 
afterEach(
$body.empty(); 
); 
相關問題