我正在使用带有pageObject概念的量角器进行e2e测试。

但是,我很难理解为什么每个pageObject都需要创建新对象?

通过代码向您展示我的问题


目前,我在pageObj.js中将pageObject定义为
var PageObj = function () { this.method1 = function() { //whatever content };}module.exports = PageObj;


并在测试规范文件中以

var PageObj = require('./pageObject/pageObj.js');
var pageObj = new PageObj();

//use pageObj's method here;
pageObj.method1();



但是,我认为下面这种方式比较简单,为什么不应该使用它呢?


pageObj.js中定义相同的方法
```

module.exports = {
    method1: function() {
        //whatever content;
    },


调用为

var pageObj = require('./pageObject/pageObj.js');

//use pageObj's method here;
pageObj.method1();

最佳答案

有时,您可能使用同一个页面对象进行多个测试,并且可能希望在其中存储表示一个测试或一组测试期间页面当前或更改状态的数据。将其用作类/构造函数可使您在每次测试之间保持清晰的状态。

如果您的想法现在和将来都对您有用,并且不限制您,那是完全可以的,仅对于这些更复杂的情况,您可能需要使用实例化页面对象来实现所需的功能。

在我们公司,我们希望坚持一种模式,而不必进行调整以将页面对象用作此处的对象,并将其用作构造函数。因此,为了在我们的测试中保持一致,我们只需遵循推荐的样式+该模式已经解决,并且如果遵循相同的准则,在项目之间进行切换就更加容易。

关于javascript - 在javascript中创建pageObject模式( Protractor 工具),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37197626/

10-10 15:38