在 Intern 中动态创建功能测试时读取本地 JSON 文件
Read local JSON files when dynamically creating functional tests in Intern
我正在使用 Intern v4 和 dojo 1.7 动态创建功能测试。为此,我将 registerSuite 分配给一个变量,并将每个测试附加到 registerSuite:
中的测试 属性
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 文件读取信息。当 dojo javascript 是 运行 时,我似乎找不到读取 JSON 文件的方法(我想在 registerSuite.tests
函数中调用它 // READ JSON FILE HERE
).我试过 dojo 的 xhr.get
、node 的 fs
、intern 的 this.remote.get
,似乎没有任何效果。
我可以用 define(['dojo/text!./generated_tests.json'])
得到静态 JSON 文件,但这对我没有帮助,因为有未知数量的 JSON 文件,文件名未知,所以我没有有我需要在声明块中调用它们的信息。
如果我的描述不清楚,请告诉我。任何帮助将不胜感激!
由于您正在创建功能测试,它们将始终 运行 在 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
,将您的套件名称和测试对象传递给它,以实际注册测试。
我正在使用 Intern v4 和 dojo 1.7 动态创建功能测试。为此,我将 registerSuite 分配给一个变量,并将每个测试附加到 registerSuite:
中的测试 属性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 文件读取信息。当 dojo javascript 是 运行 时,我似乎找不到读取 JSON 文件的方法(我想在 registerSuite.tests
函数中调用它 // READ JSON FILE HERE
).我试过 dojo 的 xhr.get
、node 的 fs
、intern 的 this.remote.get
,似乎没有任何效果。
我可以用 define(['dojo/text!./generated_tests.json'])
得到静态 JSON 文件,但这对我没有帮助,因为有未知数量的 JSON 文件,文件名未知,所以我没有有我需要在声明块中调用它们的信息。
如果我的描述不清楚,请告诉我。任何帮助将不胜感激!
由于您正在创建功能测试,它们将始终 运行 在 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
,将您的套件名称和测试对象传递给它,以实际注册测试。