【问题标题】:How to load external Json file using karma+Jasmine for angularJS testing?/如何使用 karma+Jasmine 加载外部 Json 文件进行 angularJS 测试?/
【发布时间】:2014-02-25 02:34:07
【问题描述】:

谁能在 PLUNKER 中为我提供一个示例,说明如何为业力/茉莉花测试加载 JSON 文件。我想从 JSON 文件中读取我正在编写的测试用例的数据。我一直在搜索,但他们没有提到明确的示例关于怎么做?如果有人可以提供示例,我将不胜感激。

【问题讨论】:

    标签: angularjs jasmine karma-runner


    【解决方案1】:

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

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

    【讨论】:

    • 为什么这个答案被否决了?对我来说似乎是一个有效的替代方案。为什么不希望使用require 的某些原因?
    • @MondKin,我一直在我的测试文件中使用 require 来获取必要的库和资源。我不知道为什么这被否决了。我刚刚投了赞成票。
    • 我想补充一点,如果您尝试要求没有 .js 扩展名的文件,则在使用 require 时需要使用技巧。上面的示例不一定会起作用,因为 '.js' 将附加到末尾并且无法找到 data.json.js。解决方法是添加一个虚假的 URL 参数,例如 require('./data.json?test=')。这将变成data.json?test=.js,它仍然会找到文件。
    • @RobertHenderson require('./data.json') 没有你的伎俩对我来说很好,但我看到你几年前写的。
    【解决方案2】:

    设置查找文件的路径,在这种情况下,我的文件 (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}
    

    【讨论】:

    • 看来这需要 jasmine-jquery 库。
    【解决方案3】:

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

    【讨论】:

    • 我想使用 karma/jasmine 从本地 stystem any(*.json) 文件中访问它以进行 angularJS 测试
    • jasmine.getFixtures().fixturesPath = 'base/test/'; staticData= JSON.parse(jasmine.getFixtures().read("staticData.json"));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2013-09-29
    • 2014-05-04
    • 2014-09-20
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多