无论结果如何,Nightwatch自定义断言都会导致测试执行停止

时间:2015-06-21 09:52:30

标签: selenium-webdriver nightwatch.js

我正在尝试创建一个nightwatchJS自定义断言,用于检查文件是否存在。断言似乎会触发,但是一旦断言命令完成,nightwatch就会退出。

我想我没有将控制权交还给守夜人api,但如果是这样的话,我怎么能实现呢?

  // filename = doesFileExist.js

  exports.assertion = function(fname, msg) {
   var fs = require('fs');
  
   this.message = msg + 'FileExists: ' + fname ;     
   this.expected = true;                     
   this.pass = function(value) {             
       return value == this.expected;
        } ;

   this.value = function(result) { 
       return result;       
       };    
 
   this.command = function(callback) { 
      return fs.exists(fname, callback);
       };
};

和测试用例(以nightwatch.json为例)是;

  this.checkForFile = function() {
    browser
      .verify.doesFileExist('nightwatch.json', 'test1')  
    return browser;
  };

2 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但我在编写自己的自定义断言时发现你需要在命令函数中返回'this'。回调是将您的值发送到pass.函数中使用的this.value。

所以它看起来像这样

this.command = function(callback) { 
    fs.exists(fname, callback);
    return this;
};

答案 1 :(得分:0)

我需要在调用周围添加一个api.execute,以使函数暂停。

this.command = function (callback) {
    var someValue = evaluateSomeValueHere;

    return this.api.execute(
        function (someValue) {
            return someValue;
        }, [someValue],
        function (result) {
            callback(result.value);
        }
    )


};