我需要将测试结果存储在任何存储中。但不幸的是,每当它引发异常"CasperError:找不到模块网"时,它都无法与任何数据库驱动程序一起工作:
var require = patchRequire(require);
var redis = require("redis"),
client = redis.createClient();
是否可以将casperjs连接到任何存储(当然,普通文件除外)。
这可能对具有相同挑战的人有用
我最终得到的解决方案是使用phantomjs的fs
模块写入一个文件,然后使用child_process
模块执行redis-cli
进程。我的测试实际上导入了一个通用模块来完成这项工作。数据库脚本是一组简单的redis命令,一行接一行。有关redis-cli --pipe
的详细信息,请参见redis批量插入。
var runDBScript = require("dbutils").runDBScript;
导入的runDBScript
函数
exports.runDBScript = function(scriptName) {
var cp = require("child_process");
cp.execFile('./dbscripts/exec_db_commands.sh', ["./dbscripts/" + scriptName], {}, function(error, stdout, stderr) {
casper.echo("Error: " + error);
casper.echo("Stdout: " + stdout);
casper.echo("Stderr: " + stderr);
});
};
exec_db_commands.sh
是一个非常简单的shell脚本,它调用redis客户端:
#!/usr/bin/env bash
echo "Executing cat $1 | redis-cli --pipe"
cat $1 | redis-cli --pipe