json - 为 karma 单元测试获取 json 文件

标签 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/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 在您的应用程序中,则导入它:import * as json from './test';//将导入test.json
  • 使用 Http 下载文件并执行 map(res=>res.json())
  • 对于 webpack 使用 json-loader 插件:var json = require('./my.json')
  • 对于 gulp/grunt 等,你可以编写代码生成器

关于json - 为 karma 单元测试获取 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36688887/

相关文章:

angular - 如何确保 angularjs 文本框适合文本中输入的内容?

c# - Elasticsearch NEST DisMax MoreLikeThis 查询形成空 json 字符串

java - 如何使用 Jackson 反序列化混合类型的匿名数组

java - 导致 TestNG 测试失败?

Android 工具看不到我的单元测试

javascript - 在 *ngfor(Angular) 中插入具有特定样式属性的动态元素

Angular 2更改图像src属性

asp.net-mvc - Asp.Net MVC 实用程序 Controller 过滤下拉列表的操作

javascript - 如何向 GLTF 模型添加光泽度/镜面纹理?

javascript - 配置实习生以设置/拆卸我的服务器模拟