如何使用karma+加载外部Json文件;Jasmine用于angularJS测试/

如何使用karma+加载外部Json文件;Jasmine用于angularJS测试/,angularjs,jasmine,karma-runner,Angularjs,Jasmine,Karma Runner,有人能在PLUNKER中给我举个例子,说明如何为karma/jasmine测试加载JSON文件。我想从JSON文件中读取我正在编写的测试用例的数据。我一直在搜索,但他们没有提到如何加载的明确示例?如果有人能提供示例,我将不胜感激。您想从Web服务器或本地文件系统读取JSON文件吗?没有人能给出从Plunker本地文件系统加载的例子,因为它在web浏览器中运行,并且被拒绝访问文件系统 下面是一个如何在任何Node.js程序中从磁盘加载JSON文件的示例,这应该适用于Karma/Jasmine: v

有人能在PLUNKER中给我举个例子,说明如何为karma/jasmine测试加载JSON文件。我想从JSON文件中读取我正在编写的测试用例的数据。我一直在搜索,但他们没有提到如何加载的明确示例?如果有人能提供示例,我将不胜感激。

您想从Web服务器或本地文件系统读取JSON文件吗?没有人能给出从Plunker本地文件系统加载的例子,因为它在web浏览器中运行,并且被拒绝访问文件系统

下面是一个如何在任何Node.js程序中从磁盘加载JSON文件的示例,这应该适用于Karma/Jasmine:

var fs = require('fs');
var filename = './test.json';

fs.readFile(filename, 'utf8', function (err, data) {
    if (err) {
        console.log('Error: ' + err);
        return;
    }

    data = JSON.parse(data);

    console.dir(data);
});

设置查找文件的路径,在本例中,我的文件(staticData.json)位于/test文件夹下

jasmine.getFixtures().fixturesPath = 'base/test/';
staticData= JSON.parse(jasmine.getFixtures().read("staticData.json"));
您还必须在karma.conf.js文件中添加模式,例如:

 { pattern: 'test/**/*.json', included: false, served: true}

您可以使用require加载外部json数据文件

var data = require('./data.json');
console.log(data);
// Your test cases goes here and you can use data object

我想使用karma/jasmine for angularJS testingjasmine.getFixtures().fixturesPath='base/test/',从本地stystem任意(*.json)文件访问它;staticData=JSON.parse(jasmine.getFixtures().read(“staticData.JSON”);为什么这个答案被否决了?对我来说似乎是一个有效的选择。为什么不需要使用
require
呢?@MondKin,我一直在测试文件中使用require来获取必要的库和资源。我不知道为什么这被否决了。我刚刚投了赞成票。我想补充一点,如果您试图要求一个没有.js扩展名的文件,那么在使用require时需要使用技巧。上面的示例不一定有效,因为“.js”将被追加到末尾,并且无法找到
data.json.js
。解决方法是添加一个伪URL参数,如
require('./data.json?test=')
。这将变成
data.json?test=.js
,它仍然可以定位文件。@RobertHenderson require('./data.json')在没有你的技巧的情况下对我来说很好,但我看到你几年前就在写。看起来这需要jasmine jquery库。