如何调用简单的加法函数并使用selenium-cucumber-js框架声明以下两个测试的结果来声明两个值的结果。在运行以下内容时说 TypeError:TypeError:无法读取未定义的属性“ addvalues” 在createWorld.When(C:\ Tests \ cucumber \ step-definitions \ addvalues-steps.js:5:25)
Feature:
Scenario: Addition of two values
When Add two values 5 and 10
Then I should get result 15
//这是我的'addvalues-steps.js'文件
const expect = require('chai').expect;
module.exports = function () {
this.When(/^Add two values (-?\d+) and (-?\d+)$/, (x, y) =>{
this.page.addvalues.addValues(x,y);
})
this.Then(/^I should get result (-?\d+)$/, (ans) =>{
let tot = this.page.addvalues.addValues(x, y);
expect(tot).to.be.eql(ans);
})
};
//以下是我的“ addvalues.js文件”
module.exports = {
addValues(x,y){
var total = x + y ;
return total ;
}
};
// world.js >>
const { CustomWorld } = require('cucumber')
function CustomWorld() {
console.log('overriding the world')
this.page = {
addvalues: require('../page-objects/addvalues')
}
console.log("This is the recent error log:"+this.page.addvalues)
}
module.exports = function() {
this.World = CustomWorld;
答案 0 :(得分:2)
注意:以下示例适用于旧版本的cucumber-js:1.3.3。
使用Cucumber.js,当您从步骤定义内部引用this
时,实际上是在引用World上下文。因此,为了使this.page.addvalues.addValues(x,y);
正常工作,您首先需要创建引用了page
的{{1}}。遵循以下原则:
world.js:
addvalues.js
addvalues.js:
function CustomWorld() {
console.log('overriding the world')
this.page = {
addvalues: require('../page-objects/addvalues')
}
}
module.exports = function() {
this.World = CustomWorld;
};
您的//addvalues.js
module.exports = {
addValues(x,y){
var total = x + y ;
return total ;
}
};
中还有两件事需要纠正。
steps.js
上下文。this
this.prevResult
。addvalues-steps.js:
parseInt()
UPD::事实证明,问题与selenium-cucumber-js有关,{{3}}是const expect = require('chai').expect;
module.exports = function() {
this.When(/^Add two values (-?\d+) and (-?\d+)$/, function (x, y) {
this.prevResult = this.page.addvalues.addValues(parseInt(x, 10), parseInt(y, 10));
})
this.Then(/^I should get result (-?\d+)$/, function (ans) {
let tot = this.prevResult;
expect(tot).to.be.eql(parseInt(ans, 10));
})
}
之上的框架。忽略关于cucumber-js
的评论。
根据world.js
文档,您不需要selenium-cucumber-js
即可访问步骤定义中的页面对象:
页面对象可通过全局页面对象访问,并且 从
this
自动加载。
./page-objects