TypeError: loginScreen.visibleOfWelcome 不是函数

Posted

技术标签:

【中文标题】TypeError: loginScreen.visibleOfWelcome 不是函数【英文标题】:TypeError: loginScreen.visibleOfWelcome is not a function 【发布时间】:2018-12-23 17:11:38 【问题描述】:

我想访问在 javascript 类中定义的方法。在运行代码时,我收到错误

这是我的代码: firstPage.CCC.js

module.exports = class LoginScreen 

    get welcome() 
      return element(by.id("welcome"));
    


    visibleOfWelcome() 
       expect(this.welcome).toBeVisible();
    

  

firstTest.specs.js

var loginScreen = require("./firstPage.CCC.js");

describe('Example', () => 
  beforeEach(async () => 
    await device.reloadReactNative();
  );

    it('should have welcome screen', async () => 
      await loginScreen.visibleOfWelcome();
    );
  )

如果我写await loginScreen.visibleOfWelcome();,那么我会收到一个错误

如果写await loginScreen.visibleOfWelcome; 那么我的代码工作文件。

知道为什么吗?我想打电话给await loginScreen.visibleOfWelcome();

【问题讨论】:

【参考方案1】:

尝试以下解决方案:

export class LoginScreen 

    get welcome() 
      return element(by.id("welcome"));
    


    visibleOfWelcome() 
       expect(this.welcome).toBeVisible();
    

  

现在你可以这样做了:

var LoginScreen = require("./firstPage.CCC");
var loginScreen= new LoginScreen();

describe('Example', () => 
  beforeEach(async () => 
    await device.reloadReactNative();
  );

    it('should have welcome screen', async () => 
      await loginScreen.visibleOfWelcome();
    );
  )

希望它对你有用。

【讨论】:

谢谢,它现在可以工作了。我在添加这一行后没有添加var loginScreen= new LoginScreen();,它是有效的。谢谢,舒巴姆。 这条线是否有效:expect(this.welcome).toBeVisible();?我认为this.welcome 将是一个函数,expect 可以使用函数还是需要element【参考方案2】:

你还没有实例化类LoginScreen,所以你不能访问它不是像visibleOfWelcome这样的静态成员。您必须在导出之前或导入之后创建类的实例才能访问它的成员(这就是为什么它是 OOP)。

module.exports = new LoginScreen();

// Or

var LoginScreen = require("./firstPage.CCC.js");
var loginScreen = new LoginScreen();

【讨论】:

感谢您解释创建对象的必要性。

以上是关于TypeError: loginScreen.visibleOfWelcome 不是函数的主要内容,如果未能解决你的问题,请参考以下文章