如何调试实习功能测试

时间:2015-10-01 23:46:53

标签: intern node-inspector

我正在使用节点检查器来调试我的实习功能测试。在功能测试中如何使用调试器? 如果我有一个看起来像

的功能测试
'Sample Test' : function() {
            console.log("load row grid mesh test");
            return this.remote
            .setFindTimeout(5000)
            .setWindowSize(800, 500)
            .then(pollUntil('return document.evaluate("//span[contains(@class, \'abcd\') and following-sibling::span[child::span[text() = \'App\']]]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
            .expand("App")
            .expand("Sample")
            .open("SampleApp.xlsx")
            .then(pollUntil('return document.evaluate( "//div[contains(@class, \'Cover\') and @style = \'display: none; top: 0px; left: 0px;\']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
            .findAllByClassName("abc")
              .getAttribute("style")
              .then( function(style) {
                  //I am able to put a debugger here without isssue
                  assert.isTrue(style.length < 32);
                  assert.notStrictEqual(style[0].indexOf("top: 0px;"), -1);
                  assert.notStrictEqual(style[25].indexOf("top: 480px;"), -1);
              }).end()
            debugger // I NEED TO PAUSE HERE
            .findByXpath('//div[@class = \'abc\']//span[text() = \'AppleSample\']')
              .moveMouseTo().end()

不确定如何放置调试器。我是实习生的新手。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

我个人不熟悉实习生,但假设它提供了Promise接口,您应该能够添加以下代码来触发调试器:

'Sample Test' : function() {
            console.log("load row grid mesh test");
            return this.remote
            .setFindTimeout(5000)
            .setWindowSize(800, 500)
            .then(pollUntil('return document.evaluate("//span[contains(@class, \'abcd\') and following-sibling::span[child::span[text() = \'App\']]]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
            .expand("App")
            .expand("Sample")
            .open("SampleApp.xlsx")
            .then(pollUntil('return document.evaluate( "//div[contains(@class, \'Cover\') and @style = \'display: none; top: 0px; left: 0px;\']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000))
            .findAllByClassName("abc")
              .getAttribute("style")
              .then( function(style) {
                  //I am able to put a debugger here without isssue
                  assert.isTrue(style.length < 32);
                  assert.notStrictEqual(style[0].indexOf("top: 0px;"), -1);
                  assert.notStrictEqual(style[25].indexOf("top: 480px;"), -1);
              }).end()
            .then(function(node) {
              debugger; // PAUSE HERE
              return node; // forward the promise value 
            });
            .findByXpath('//div[@class = \'abc\']//span[text() = \'AppleSample\']')
              .moveMouseTo().end()

答案 1 :(得分:0)

我认为一般来说,很难像你所拥有的那样阅读长篇剧本。 如你所见,它也很难调试。

我会将其分解为变量,例如:

var setConfig = this.remote .setFindTimeout(5000) .setWindowSize(800, 500);

var openSample = setConfig .then(pollUntil('return document.evaluate("//span[contains(@class,\'abcd\') and following-sibling::span[child::span[text() = \'App\']]]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) .singleNodeValue', 8000)) .expand("App") .expand("Sample") .open("SampleApp.xlsx");

var abc = openSample.then(pollUntil('return document.evaluate( "//div[contains(@class, \'Cover\') and @style = \'display: none; top: 0px; left: 0px;\']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue', 8000)) .findAllByClassName("abc"); ...

它仍然不是最好的方式,但至少它看起来更清晰,可以帮助您更轻松地进行调试。

答案 2 :(得分:0)

我发现自己通过大多数时间手动暂停promise字符串进行调试。

我在问题行之前使用.sleep(10000)暂停测试,然后从终端手动退出crtl + c并使用firebug查看浏览器的状态。

您还可以在运行测试时设置记者类型&#39; console&#39;在找到代码中的错误时,记者非常有帮助,虽然有点冗长。更多实习生文档https://theintern.github.io/intern/#reporter-overview