1

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

おそらくファイルの内容を文字列として渡し、それをモジュール内のオブジェクトに変換できると思いますが、それは私には正しくないようです。

他の誰かがこれを試しましたか?成功しましたか?

4

1 に答える 1

1

test1.runTest(casper, config, "testme");このように、Casper#thenステートメントでラップするだけでよいようです。

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
});

// ---
casper.then(function() {
  test1.runTest(casper, config, "testme");
});
// ---

casper.run(function() {
  this.test.done();
  this.test.renderResults(true);
});

PhantomJS 1.9.1 および CasperJS 1.1.0 (Master ブランチ) を使用してテスト済み。

于 2013-06-27T01:11:39.717 に答える