0

我正在尝试使用 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!”。

有谁知道我应该如何编写这个测试,或者有一些适当的(现实生活中的)功能测试示例的链接?

谢谢你的帮助,

塞巴斯蒂安

4

1 回答 1

0

函数式接口不使用回调参数,而是使用 Promise。您的代码应如下所示:

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. 最后一个 promise 链 fromthis.remote由测试函数返回,以向 Intern 指示测试是异步的
  2. waitForCondition不返回值
  3. 你永远不应该称呼quit自己;测试完成后由实习生处理
于 2013-06-10T05:42:10.607 回答