問題描述
如此 stackoverflow 答案,看起來 Karma 將提供 JSON 固定裝置.但是,我花了太多時間試圖讓它在我的環境中工作.原因:我正在進行角度測試,需要將模擬 HTTP 結果加載到測試中,因為 Jasmine 不支持任何全局設置/拆卸模擬服務器和其他東西.
As indicated in this stackoverflow answer, it looks like Karma will serve JSON fixtures. However, I've spent too many hours trying to get it to work in my environment. Reason: I'm doing angular testing and need to load mock HTTP results into the test, as Jasmine doesn't support any global setup/teardown with mock servers and stuff.
在我的 karma 配置文件中,我這樣定義一個夾具:
In my karma config file, I'm defining a fixture as so:
files: [
// angular
'angular/angular.min.js',
'angular/angular-route.js',
'angular/mock/angular-mocks.js',
// jasmine jquery helper
'jquery-1.10.2.min.js',
'angular/jasmine-jquery.js',
// our app
'../public/js/FooApp.js',
// our tests
'angular/*-spec.js',
// fixtures
{ pattern: 'node/mock/factoryResults.json',
watched: 'true',
served: 'true',
included: 'false' }
]
在我嘗試在我的 jasmine 測試中使用 jasmine-jquery.js 加載 JSON 之前,我看到 karma 在嘗試為它提供服務時窒息:
Before I even attempt to use jasmine-jquery.js in my jasmine test to load the JSON, I see karma choking on trying to serve it:
...
DEBUG [web-server]: serving: /Users/XXX/FooApp/spec/node/mock/factoryResults.json
Firefox 25.0.0 (Mac OS X 10.8) ERROR
SyntaxError: missing ; before statement
at /Users/XXX/FooApp/spec/node/mock/factoryResults.json:1
...
這是 factoryResults.json 的樣子:
Here's what factoryResults.json looks like:
{ "why": "WHY" }
知道這里發生了什么嗎?我在網上看到很多通過業力裝置成功地將 JSON 加載到 jasmine 測試中的例子.業力可以看到文件;如果我在我的夾具塊中放置了錯誤的路徑,我會看到一個錯誤,指出它找不到任何與我的夾具模式匹配的文件.我嘗試過以不同方式重新格式化 .json 文件...有什么想法嗎?
Any idea what's going on here? I see plenty of examples on the web of folks successfully loading JSON into jasmine tests via karma fixtures. Karma can see the file; if I put the wrong path in my fixture block, I see an error stating that it couldn't find any files that match my fixture pattern. I've tried reformatting the .json file in different ways... Any ideas?
推薦答案
你的問題是 'false'
必須是布爾值,而不是字符串.
Your problem is that 'false'
has to be a boolean, not a string.
已經有一個問題來更好地驗證配置并修復這樣的問題錯誤.
There is already an issue to validate the config better and fix such a mistakes.
另外,您可以編寫一個簡單的json"預處理器(類似于 karma-html2js) 將使其成為有效的 JS 并將 JSON 放入某個全局命名空間中,以便您可以保持測試同步...
Also, you might write a simple "json" preprocessor (similar to karma-html2js) that would make it valid JS and put the JSON into some global namespace so that you can keep the tests synchronous...
這篇關于為什么 Karma 拒絕提供我的 JSON 夾具(我想在我的 jasmine/angularjs 測試中使用它)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!