我正在使用 casperjs 为我的 GUI 编写测试套件。我已将代码拆分为由主脚本调用的模块。
我似乎无法将 javascript 对象传递给我的模块。我正在读取一个 json 配置文件,将其转换为一个对象,然后我想将它传递给我的模块。
testSuite.js(主脚本):
var casper = require('casper').create();
var test1 = require('../jstests/admin/auth');
var config = {};
casper.start('http://localhost:8080/ipiadmin', function() {});
var fs = require('fs');
configFile = fs.read('./jstests/admin/config.json');
casper.then(function() {
config = JSON.parse(configFile);
});
casper.then(function() {
this.echo("username: " + config.username); // outputs the name correctly
});
test1.runTest(casper, config, "testme");
casper.run(function() {
this.test.done();
this.test.renderResults(true);
});
auth.js(模块)
exports.runTest = function auth(casper, config, test) {
/*** Login ***/
casper.waitFor(function() {
this.echo("test: " + test); // "test: testme"
this.echo("username: " + config.username); // "username: undefined"
return true;
});
return true;
}
config.json(配置文件)
{
"username": "something",
"password": "secret"
}
当我运行上述内容时,我得到:
Test file: jstests/admin/testSuite.js
username: something
--- Running auth ---
test: testme
username: undefined
我猜我可能可以将文件内容作为字符串传递,然后将其转换为模块中的对象,但这对我来说似乎不太正确。
有没有其他人试过这个?成功地?