为什么 Karma 拒绝提供我的 JSON 夹具(我想在我的 jasmine/angularjs 测试中使用它)

Why is Karma refusing to serve my JSON fixture (which I#39;d like to use in my jasmine / angularjs tests)(为什么 Karma 拒绝提供我的 JSON 夹具(我想在我的 jasmine/angularjs 测试中使用它))
本文介绍了为什么 Karma 拒绝提供我的 JSON 夹具(我想在我的 jasmine/angularjs 测试中使用它)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

如此 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 测试中使用它)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

jasmine.createSpyObj with properties(jasmine.createSpyObj 与属性)
What#39;s a good way to reuse test code using Jasmine?(使用 Jasmine 重用测试代码的好方法是什么?)
Does Jasmine#39;s toThrow matcher require the argument to be wrapped in an anonymous function?(Jasmine 的 toThrow 匹配器是否需要将参数包装在匿名函数中?)
Jasmine - Spying on a method call within a constructor(Jasmine - 在构造函数中监视方法调用)
Getting requirejs to work with Jasmine(让 requirejs 与 Jasmine 一起工作)
How can I spy on a getter property using jasmine?(如何使用 jasmine 监视 getter 属性?)