获取用于karma单元测试的json文件
我想在单元测试中获得一个JSON文件,因为我需要它来进行测试,但我不知道如何包含该文件 我用karma和Jasmine进行测试。我的项目是用Angular 2创建的 我的JSON文件的名称是获取用于karma单元测试的json文件,json,unit-testing,angular,karma-jasmine,systemjs,Json,Unit Testing,Angular,Karma Jasmine,Systemjs,我想在单元测试中获得一个JSON文件,因为我需要它来进行测试,但我不知道如何包含该文件 我用karma和Jasmine进行测试。我的项目是用Angular 2创建的 我的JSON文件的名称是'www/assets/mocks/emptyCalendarData.JSON' 有人知道如何将JSON文件包含到规范文件中吗 谢谢 更新 我试图使用HTTP get,但后来我得到了一个系统 let calendarData: Calendar; http.get('www/assets/mocks/emp
'www/assets/mocks/emptyCalendarData.JSON'
有人知道如何将JSON文件包含到规范文件中吗
谢谢
更新
我试图使用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
eval@[native code]
__exec@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:1482:16
execute@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3896:22
linkDynamicModule@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3222:36
link@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3065:28
execute@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:3402:17
doDynamicExecute@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:796:32
link@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:998:36
doLink@http://localhost:9876/base/node_modules/systemjs/dist/system.src.js?18a094f61af9f2ec0577ca3a337760d97719b624:650:11
updateLinkSetOnLoad@http://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
invoke@http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:364:34
run@http://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
invokeTask@http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:397:43
runTask@http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:294:58
drainMicroTaskQueue@http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:515:43
invoke@http://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
invokeTask@http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:397:43
runTask@http://localhost:9876/base/node_modules/zone.js/dist/zone.js?b9a84410301a475a439d6b7b4e7eff0954f5b925:294:58
invoke@http://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'}
我将模拟JSON数据像变量一样存储到ts文件中。i、 e
export var getMockResponseJSON = { 'key': value };
稍后,当我想要访问此变量时,我只需像以下那样导入它:
import {getMockResponseJSON} from "../JSONs";
在我的课堂上使用它
expect(getMockResponseJSON.key).not.toEqual(1);
有很多方法可以做到这一点:
- 导入json(如果它在应用程序中):
import*作为json从“/test”导入//将导入test.json
- 使用
和doHttp
map(res=>res.json())下载文件
- 对于网页包,请使用json加载程序插件:
var json=require('./my.json')
- 对于咕噜声/咕噜声等,您可以编写代码生成器
Http
类来实现这一点
以下是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();
}
);
});
请参阅以下内容:。您想如何使用此文件?这是一种配置测试处理的方法?我想要类似于
let data:Calendar={JSON FILE}
的东西。第一个选项不好,因为我想将它放在名为data
的变量中,第二个选项是当我这样做时,我会得到一个zoneJS/systemJS错误,为什么不直接重命名它,然后import*as data from./test'代码>不幸的是,当我运行“npm start”时,调试器抱怨“*.component.ts(3,24):错误TS2307:找不到模块./data1.”我在*.component.ts顶部有“import*as data from”.data1.json'”,并且“data1.json”与*.component.ts具有相同的目录路径