waitForCondition方法永远不会返回?

时间:2013-05-22 16:13:54

标签: intern

我正在尝试使用Intern来编写第一个功能测试,我无法解决以下问题:运行以下测试脚本时

define(["intern!object",
    "intern/chai!assert"
], function(registerSuite, assert){

    registerSuite({
        name: "suite",
        "test": function(){
            var browser = this.remote;
            console.log("HELLO !");
            browser.get("http://www.google.com", function() {
                console.log("PAGE LOADED !");
                browser.waitForCondition("!!window.document.gbqf", 1000, function(err, value){
                    console.log("LET'S BEGIN... ");
                    browser.eval("window.document.gbqf", function(err, value){
                        console.log("BYE BYE !");
                        browser.quit();
                    });
                });
            });
        }
    });
});

在chrome中,使用selenium server standalone 2.32.0和chromedriver 26.0.1383.0 for windows,我的测试永远不会结束,控制台中显示的最后一条消息是“PAGE LOADED!”。

有没有人知道我打算如何编写这个测试,或者链接到一些正确的(现实生活)功能测试示例?

感谢您的帮助,

的Sebastien

1 个答案:

答案 0 :(得分:0)

功能接口不使用回调参数,而是使用promises。您的代码应如下所示:

define([
    "intern!object",
    "intern/chai!assert"
], function (registerSuite, assert) {
    registerSuite({
        name: "suite",
        "test": function () {
            var browser = this.remote;
            console.log("HELLO !");
            return browser
                .get("http://www.google.com")
                .then(function () {
                    console.log("PAGE LOADED !");
                })
                .waitForCondition("!!window.document.gbqf", 1000)
                .then(function () {
                    console.log("LET'S BEGIN... ");
                })
                .eval("window.document.gbqf")
                .then(function (value) {
                    console.log("BYE BYE !");
                });
            });
        }
    });
});

特别注意:

  1. 测试函数返回this.remote的最后一个保证链,以向实习生表明测试是异步的
  2. waitForCondition未返回值
  3. 你不应该自己打电话给quit;一旦测试完成,这将由Intern处理