dojo 在内部动态创建功能测试时读取本地JSON文件

k7fdbhmy  于 2022-12-08  发布在  Dojo
关注(0)|答案(1)|浏览(120)

我正在使用Intern v4和dojo 1.7动态创建功能测试。为了实现这一点,我将registerSuite分配给一个变量,并将每个测试附加到registerSuite中的Tests属性:

var registerSuite = intern.getInterface('object').registerSuite;
var assert = intern.getPlugin('chai').assert;

// ...........a bunch more code .........

registerSuite.tests['test_name'] = function() {

    // READ JSON FILE HERE
    var JSON = 'filename.json';

    // ....... a bunch more code ........
}

这部分工作得很好。我面临的挑战是,我需要为动态创建的每个测试读取不同JSON文件中的信息。我似乎找不到在运行dojojavascript时读取JSON文件的方法(我想在registerSuite.tests函数中调用它,它显示为// READ JSON FILE HERE)我尝试了dojo的xhr.get、node的fs、intern的this.remote.get,似乎都不起作用。
我可以使用define(['dojo/text!./generated_tests.json'])获取静态JSON文件,但这对我没有帮助,因为有未知数量的JSON文件具有未知的文件名,所以我没有在declare块中调用它们所需的信息。
请让我知道,如果我的描述不清楚。任何帮助将不胜感激!

t9aqgxwy

t9aqgxwy1#

因为你创建的是功能测试,所以它们总是在Node中运行,所以你可以访问Node环境,这意味着你可以做一些类似的事情:

var registerSuite = intern.getPlugin('interface.object').registerSuite;
var assert = intern.getPlugin('chai').assert;

var tests = {};
tests['test_name'] = function () {
    var JSON = require('filename.json');
    // or require.nodeRequire('filename.json')
    // or JSON.parse(require('fs').readFileSync('filename.json', {
    //      encoding: 'utf8'
    //    }))
}

registerSuite('my suite', tests);

另一件需要记住的事情是,给registerSuite.tests赋值实际上不会(或者不应该)做任何事情,你需要调用registerSuite,传递你的套件名和tests对象,来实际注册测试。

相关问题