我正在尝试创建一个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;
};
答案 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);
}
)
};