如何使用karma + Jasmine加载外部Json文件进行angularJS测试?/

use*_*410 8 jasmine angularjs karma-runner

任何人都可以在PLUNKER中为我提供如何为karma/jasmine test加载JSON文件的例子.我想从JSON文件中读取我正在编写的测试用例中的数据.我一直在搜索但是他们没有提到如何的明确示例做到了吗?如果有人能提供这个例子我很感激.

小智 8

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

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

  • 我想补充一点,如果要使用不带.js扩展名的文件,则在使用require时需要使用技巧。上面的示例不一定会工作,因为'.js'将被附加到末尾并且无法找到`data.json.js`。解决方法是添加一个伪造的URL参数,例如`require('./ data.json?test =')`。这将变成`data.json?test = .js`,它将仍然找到文件。 (2认同)

Dan*_*ela 6

设置查找文件的路径,在这种情况下,我的文件(staticData.json)位于/ test文件夹下.

jasmine.getFixtures().fixturesPath = 'base/test/';
staticData= JSON.parse(jasmine.getFixtures().read("staticData.json"));
Run Code Online (Sandbox Code Playgroud)

您还必须在karma.conf.js文件中添加模式,例如:

 { pattern: 'test/**/*.json', included: false, served: true}
Run Code Online (Sandbox Code Playgroud)


JBC*_*BCP 1

您想从网络服务器或本地文件系统读取 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);
});
Run Code Online (Sandbox Code Playgroud)