CasperJS测试文件中的测试套件循环导致shell中的随机故障

时间:2015-01-03 01:00:49

标签: javascript casperjs

我想查看几个网站的标题。所以,当我想用​​“测试对象”做的时候,我随机得到不同的结果。我的意思是,当我运行shell命令“casperjs test ...”时:

  • 有时,我的shell会显示所有测试(确定!)
  • 有时(截图#1),所有测试都没有完成
  • 有时候(截图#2),我得到一个失败的“检查标题”测试,之前打开(url)没有加载新的网址(?!)

我的shell的屏幕截图:http://s16.postimg.org/auwhiqkpg/Sans_titre.jpg

我的代码:

casper.options.loadImages = false;

var lines = [
  "http://www.jeuxvideo.com;JEUXVIDEO.COM - La Référence des Jeux Vidéo sur PC et Consoles !",
  "http://www.google.fr;Google",
  "http://casperjs.org/;CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS",
  "http://en.wikipedia.org/wiki/Main_Page;Wikipedia, the free encyclopedia",
  "http://stackoverflow.com/;Stack Overflow",
  "http://9gag.com/;9GAG - Why So Serious?",
  "http://eu.blizzard.com/fr-fr/;Blizzard Entertainment",
  "http://openclassrooms.com/;OpenClassrooms, Le Site du Zéro - Les cours les plus ouverts du Web",
  "http://lesjoiesducode.fr/;Les joies du code ",
  "http://www.developpez.com/;Developpez.com, le club des développeurs et IT Pro",
];

function main(){
  this.each(lines, function(self, line){
    var tab = line.split(";");
    casper.test.begin("test : "+tab[0], 1, function suite(test){
      casper.start().then(function(){

        this.then(function(){
          this.open(tab[0]);
        });

        this.then(function (){
          this.echo(this.currentHTTPStatus);
          test.assertTitle(tab[1]);
        });

      }).run(function(){
        test.done();
      });
    });
  });
}

casper.start().then(main).run();

我的版本:

casperjs version : 1.1.0-beta3
phantomjs version : 1.9.7

为什么有时候,所有的测试都没有完成,为什么有时候没有加载新的url? (而开放(网址)在.then中)

1 个答案:

答案 0 :(得分:4)

您应该在测试用例中仅使用startrun 一次,而不要在casper.test.begin之外。您不需要main函数作为then的一个步骤。此外,您还可以进一步压缩脚本。

  lines.forEach(function(line){
    var tab = line.split(";");
    casper.test.begin("test : "+tab[0], 1, function suite(test){
      casper.start(tab[0]).then(function (){
        this.echo(this.currentHTTPStatus);
        test.assertTitle(tab[1]);
      }).run(function(){
        test.done();
      });
    });
  });