2016-04-18 34 views
1

JSON文件我希望得到一個JSON文件在我的單元測試,因爲我需要它爲我的測試,但我不知道我怎麼能包括文件獲取人緣單元測試

我跑我的測試與人緣和茉莉花。我的項目是用Angular 2創建的。

我的JSON文件的名稱是'www/assets/mocks/emptyCalendarData.JSON'

有人知道如何將JSON文件包含到spec文件中嗎?

感謝

UPDATE

我試圖用HTTP GET但後來我得到了一個系統

let calendarData: Calendar; 
http.get('www/assets/mocks/emptyCalendarData.json') 
    .map(res => res.json()) 
    .subscribe(
     data => calendarData = data, 
     err => console.log(JSON.stringify(err)) 
    ); 

然後我得到這個錯誤:

ERROR: Error{stack: null, originalErr: TypeError{stack: 'mergeOptions 
get 


eval code 
[email protected][native code] 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:1482:16 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3896:22 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3222:36 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3065:28 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3402:17 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:796:32 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:998:36 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:650:11 
[email protected]://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:698:24 
http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:510:30 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:364:34 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:257:50 
http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:609:61 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:397:43 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:294:58 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:515:43 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:467:41 
http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:92:33 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:397:43 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:294:58 
[email protected]://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:464:41', line: 38}, line: 821, sourceURL: 'http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624'} 
+0

你要如何使用本文件?這是一種配置測試處理的方法嗎? –

+0

我想要類似'let data:Calendar = {JSON FILE}' – mbakker1996

回答

3

有很多方法可以做到這一點:

  • 如果它位於您的應用程序內部,請導入json :import * as json from './test'; //will import test.json
  • 使用Http,做下載文件map(res=>res.json())
  • 爲的WebPack使用JSON-裝載機插件:var json = require('./my.json')
  • 爲一飲而盡/咕嚕等,您可以編寫代碼生成
+0

第一個選項不好,因爲我希望它在一個名爲'data'的變量中,第二個選項當我這樣做時,我得到一個zoneJS/systemJS錯誤 – mbakker1996

+0

爲什麼不重新命名它,然後'輸入*作爲來自'.test'的數據;' – kemsky

+0

不幸的是,當我運行「npm start」時,調試器抱怨「* .component.ts(3,24):error TS2307:Can not找到模塊'./data1'。「我有*從* .component.ts頂部的'.data1.json'「導入*數據,'data1.json'與* .component.ts具有相同的目錄路徑 – jerryh91

3

我藏我把JSON數據模擬成一個像變量一樣的ts文件。即

export var getMockResponseJSON = { 'key': value }; 

後來我想達到這個變量,我只是導入它想:

import {getMockResponseJSON} from "../JSONs"; 

,並在我的課堂上使用它

expect(getMockResponseJSON.key).not.toEqual(1); 
0

你可以充分利用Http類的Angular2在你的測試中做到這一點。

這裏是一個beforeAll函數內的樣本:

beforeAll((done) => { 
    let injector = Injector.resolveAndCreate([ HTTP_PROVIDERS ]); 
    let http = injector.get(Http); 
    http.get('app/data.json').subscribe(
    (data) => { 
     this.data = data.json(); 
     done(); 
    } 
); 
}); 

見本plunkr:https://plnkr.co/edit/k6jxHf?p=preview